سؤال

كيفية تأمين هذه الخلية بيان بنيت في PHP?سيكون عرضة للحقن SQL?

$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())", 
                 mysql_escape_string($_SESSION['client']['id']), 
                 mysql_escape_string($_POST['id']));
هل كانت مفيدة؟

المحلول

ونعم ل٪ د النتائج إلا في عدد ليس هناك حاجة للهروب من السلسلة. إن استخدام علامات الاقتباس المفردة توفير تحسين سرعة أيضا. لذلك وسيلة آمنة وسريعة هي:

$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', $_SESSION['client']['id'], $_POST['id']);

نصائح أخرى

أي أنها لا يجب أن تكون عرضة للخطر.

هنا مقالة مفصلة حول كيفية تأمين الخاص بك SQL استفسارات PHP.

http://www.tech-evangelist.com/2007/11/05/preventing-sql-injection-attack/

ويبدو على ما يرام بالنسبة لي.

في الواقع، ليس هناك أي حاجة لاستخدام mysql_escape_string في هذه الحالة، منذ sprintf ( "٪ د") يمكن أن يؤدي إلا إلى عدد؟

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