سؤال

ما هي الطريقة الأكثر موثوقية وآمنة لتحديد ما هي الصفحة إما إرسالها، أو دعا (عبر AJAX)، الصفحة الحالية. أنا لا أريد أن استخدام $_SERVER['HTTP_REFERER']، بسبب (انعدام) والموثوقية، وأنا بحاجة إلى صفحة استدعائه ليأتي إلا من طلبات الناشئة على موقعي.

تحرير: أنا أبحث للتحقق من أن السيناريو الذي التشكيل سلسلة من الإجراءات يتم استدعاؤها من صفحة على موقع الويب الخاص بي

هل كانت مفيدة؟

المحلول

ويتم إرسال التحويلية التي كتبها مستعرض العميل كجزء من بروتوكول HTTP، وبالتالي لا يمكن الاعتماد عليها في الواقع. قد لا يكون هناك، قد تكون مزورة، لا يمكنك أن تثق به اذا كان لأسباب أمنية.

إذا كنت تريد التحقق مما إذا كان الطلب يأتي من موقع الويب الخاص بك، وأيضا كنت لا تستطيع، ولكن يمكنك التحقق من كان المستخدم لموقعك و / أو مصادقة. يتم إرسال الكوكيز في طلبات AJAX حتى تتمكن من الاعتماد على ذلك.

نصائح أخرى

ولقد وجدت ما هو أفضل CSRF رمز وحفظه في الدورة للحصول على ارتباطات حيث كنت في حاجة للتحقق من الإحالات.

وحتى إذا كنت توليد رد FB بعد ذلك أن ننظر بشيء من هذا القبيل:

$token = uniqid(mt_rand(), TRUE);
$_SESSION['token'] = $token;
$url = "http://example.com/index.php?token={$token}";

وثم index.php سيبدو هذا:

if(empty($_GET['token']) || $_GET['token'] !== $_SESSION['token'])
{
    show_404();
} 

//Continue with the rest of code

وأنا أعرف من المواقع الآمنة التي تفعل ما يعادل هذا لجميع صفحاتها آمنة.

$ _SERVER [ 'HTTP_REFERER']

<اقتباس فقرة>   

وعنوان الصفحة (إن وجدت) التي أشار إليها وكيل المستخدم ل   الصفحه الحاليه. وهو يحدد من قبل وكيل المستخدم. ليس كل وكلاء المستخدم سوف   ضبط هذا، وتوفير بعض القدرة على تعديل HTTP_REFERER باعتباره   خاصية. وباختصار، فإنه لا يمكن حقا يمكن الوثوق بها.

if (!empty($_SERVER['HTTP_REFERER'])) {
    header("Location: " . $_SERVER['HTTP_REFERER']);
} else {
    header("Location: index.php");
}
exit;

وليس هناك طريقة يمكن الاعتماد عليها للتحقق من ذلك. انها حقا تحت يد العميل أن أقول لك من أين جاء. هل يمكن أن تتخيل لاستخدام الكعكة أو جلسات المعلومات فقط وضع على بعض صفحات موقع الويب الخاص بك، ولكن القيام بذلك من شأنه كسر تجربة المستخدم مع الإشارات.

ولقد تركنا خيار واحد فقط بعد قراءة جميع المشاكل المرجع وهمية: بمعنى آخر. الصفحة ننشده لتتبع برسائل الإحالة يجب أن تبقى في الدورة، وكما اياكس دعا ثم التدقيق في الجلسة إذا كان لديه قيمة الصفحة المرجع والقيام إجراءات أخرى الحكمة أي إجراء.

وعلى الرغم من ناحية أخرى لأنه يطلب أي صفحة أخرى ثم جعل قيمة الجلسة المرجع لاغية.

وتذكر أن يتم تعيين متغير جلسة على طلب صفحة الرغبة فقط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top