JavaScript Securty: دعوة AJAX لتسجيل دقة شاشة المستخدم، هل من الممكن منع الأرقام المزيفة؟

StackOverflow https://stackoverflow.com/questions/908283

سؤال

هذا سؤال أمان JavaScript: افترض أن صفحة تعرف على دقة شاشة الكمبيوتر، مثل 1024 × 768، وترغب في استخدام مكالمة AJAX لتسجيل هذه البيانات في DB.

هل هناك طريقة لمنع البيانات المزيفة في الواقع في DB؟ أعتقد أن HTML أو JavaScript يفعله، يمكن للمستخدم عكس مهندس الكود بحيث يتم إدخال بعض الأرقام المزيفة في DB، أم أن هناك طريقة تمنعها من الحدوث تماما؟ (100٪ آمنة).

تحديث: أو في موقف مماثل ... إذا كتبت لعبة جافا سكريبت بسيطة ... هل هناك طريقة للمستخدم لإرسال النتيجة من قبل AJAX وتكذب عن درجاتهم؟

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

المحلول

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

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

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

نصائح أخرى

من غير الممكن إيقاف المستخدمين من إرسال أي أرقام يعجبونها من جافا سكريبت.

أعتقد أن أفضل ما يمكنك فعله هو القيام بتحقق نوع من جانب الخادم للتأكد من أن الأرقام المرسلة مرة أخرى تبدو وكأنها دقة واقعية.

لست متأكدا من السبب في أن شخصا يقضي وقتا في محاكاة ساخرة تلك الأرقام في المقام الأول رغم ذلك.

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

بالنسبة للقرار، سيكون من المستحيل بشكل أساسي تحديد ما إذا كان قرار صالح. عادة ما يتم إرسال قرار الخاص بي إلى الخادم ك 5120 × 1600، والذي يبدو غير واقعي، لكنه لأن الشاشتين غالبا ما يتم إرسالها ك 1. خلاف ذلك، هناك مجموعة متنوعة ضخمة من الاحتمالات في دقة الشاشة وتكوينات الشاشة، أنت " D ربما قم بإزالة الكثير من تلك الصالحة، على الرغم من أنها قد تكون قليلة.

للحصول على درجة اللعبة، يمكنك القيام بشيكات إضافية تجعلها أكثر تعقيدا للتحقق. أشياء مثل إرسال إشعارات متعددة من النتيجة في جميع أنحاء اللعبة وتتطلب رقم X للتأكد من أن النتيجة المستلمة صالحة. (أي، يجب أن تتلقى واحدة بين 200-300 و 400-500 و 700-800 ثم النتيجة النهائية البالغ 1000.) مع النتيجة النهائية، يمكنك أيضا الحصول على نوع من القيمة المشفرة التي لا يمكن استخدامها مرة واحدة أو تحتوي فقط بعض البيانات مع CRC عليها. في الأساس، في النهاية، تتطلب تلقي بيانات أخرى من النتيجة فقط، وخاصة للحصول على درجات أعلى.

لمحاولة إجابة عن طريق التصميم على التعليقات التي أدلى بها DOK، ونفسك، هناك تمييز واضح بين التلاعب بتطبيق "خداع" خارج شيء ما، سواء كان العمل عبر الإنترنت للحصول على شيء أرخص أو MMPORG للحصول على المزيد من الخبرة ، من معالجة ذلك بطريقة تجعل الواجهة بشكل غير صحيح ويقلل من تجربة المستخدم الإجمالية لهذا المستخدم (Hacker؟).

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

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