Bir PHP komut dosyası bu MySQL deyimi ne kadar güvenli?

3 Cevap php

Bir PHP inşa bu MySQL deyimi ne kadar güvenli? Bir SQL enjeksiyon için savunmasız olurdu?

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

3 Cevap

Evet% d sadece dize kaçmak için gerek yoktur bir takım elde edilmektedir. Tek tırnak kullanarak çok hızlı bir gelişme sağlayacaktır. Yani güvenli ve hızlı bir yoludur:

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

Hayır o savunmasız olmamalıdır.

İşte PHP sizin SQL sorguları güvenli nasıl ayrıntılı bir yazıdır.

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

Bana gayet iyi görünüyor.

Aslında, sprintf ("% d") yalnızca bir dizi neden olabilir, çünkü bu durumda mysql_escape_string kullanmak için herhangi bir ihtiyaç var mı?