عبارات معدّة: دفاع قوي ضد حقن SQL
يظل حقن SQL بمثابة ثغرة أمنية حاسمة ، مما يسمح للمهاجمين بمعالجة استعلامات قاعدة البيانات لأغراض ضارة. توفر البيانات المعدة حلاً قويًا ، مما يمنع هذا النوع من الهجوم بشكل فعال. ولكن كيف يعملون؟البيانات المعدة تستخدم الاستعلامات المعلمة. بدلاً من تضمين إدخال المستخدم مباشرة في سلسلة SQL ، يتم إنشاء استعلام قالب مع أصحاب نائبة (مثل "؟"). ثم يتم توفير القيم الفعلية بشكل منفصل باستخدام طرق مثل
setString () ،
setInt () ، إلخ.
"إدراج في قيم المستخدمين ('" اسم المستخدم "')" ). في هذا النهج غير الآمن ، يصبح الكود الخبيث الذي حقنه المستخدم جزءًا من الاستعلام الذي تم تنفيذه. على سبيل المثال ، يمكن للمستخدم إدخال
'؛ إسقاط مستخدمي الجدول ؛ -' يؤدي إلى حذف الجدول.
تفصل بشكل صارم لاستعلام SQL من البيانات المرفقة من المستخدم . يتم التعامل مع العناصر النائبة كبيانات ، وليس كرمز SQL القابل للتنفيذ. يعالج محرك قاعدة البيانات قيم المعلمة بشكل مستقل ، ويمنع تفسير أي رمز ضار كجزء من أمر SQL.
مثال توضيحي:
قارن هذين قصاصات الكود:
// Vulnerable to SQL injection
Statement stmt = conn.createStatement("INSERT INTO users VALUES('" username "')");
stmt.execute();
// Secure using PreparedStatement
PreparedStatement stmt = conn.prepareStatement("INSERT INTO users VALUES(?)");
stmt.setString(1, username);
stmt.execute();
المثال الأول عرضة لحقن SQL. والثاني ، باستخدام attatement المعدة ، يفصل ببنية الاستعلام بأمان عن اسم المستخدم للمستخدم ، مما يجعل حقن SQL غير فعال.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3