как избежать внедрения MySQL при обращении к веб-URL - PullRequest
2 голосов
/ 08 января 2012

У меня есть веб-страница, отфильтрованная по пути URL.Адрес выглядит примерно так:

www.xxx.com / player-profile /? ID = 130

Страница фильтруется с использованием поля идентификатора следующим образом:

$playerid = $_GET['ID'];

$result = mysql_query("SELECT * FROM tblPlayers Where lng_RecordID_PK LIKE ".$playerid."");

Я хочу убедиться, что в этом коде нет проблем с безопасностью.Я полагаю, что кто-то может попытаться манипулировать URL.Есть предложения?

Ответы [ 3 ]

2 голосов
/ 08 января 2012

Вы можете использовать Подготовленные операторы PDO в качестве безопасного способа выполнения ваших запросов SQL.

2 голосов
/ 08 января 2012

Поскольку идентификатор числовой, существует очень простой и очень эффективный способ обеспечения безопасности запроса!

$playerid = $_GET['ID'];
if (!is_numeric($playerid)) { die(); }
$playerid = mysql_real_escape_string($playerid); // Just in case

Этот код в основном гарантирует, что идентификатор, введенный в URL, является числовым, иначе он прекратит выполнение скрипта. Если он числовой, он будет продолжать извлекать данные, и нет никаких способов сделать какие-либо SQL-инъекции.

Надеюсь, это помогло! :)

Кроме того, вы можете изменить свой запрос на

$result = mysql_query("SELECT * FROM tblPlayers WHERE lng_RecordID_PK = '".$playerid."' ");
2 голосов
/ 08 января 2012

Используйте функции addslashes или mysql_real_escape_string для $playerid. Кроме того, заключите $playerid в кавычки, вставляя его в свой запрос. Наконец, избегайте использования LIKE, когда простой = будет делать то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...