2013-05-15 8 views
2

У меня есть URL-адрес, что, когда действительный будет выглядеть следующим образом:SQL Injection Профилактика - GET_VARS

site.com/page.php?id=12345 

Я пытаюсь понять, если мы vunderable к SQL-инъекции. В этом конкретном случае значение должно быть только положительным целочисленным значением, так как оно является идентификационным номером. Иногда мы используем другие переменные, которые могут быть буквой или строкой текста, например, страницами результатов поиска.

Пример кода, используемого для извлечения переменной ID здесь:

$variable = "0"; 
if (isset($HTTP_GET_VARS["id"])) { 
    $variable = (get_magic_quotes_gpc()) ? $HTTP_GET_VARS["id"] : addslashes($HTTP_GET_VARS["id"]); 
} 

В большинстве случаев получать переменную из URL, он подошел к этому пути.

Это что-то для предотвращения инъекций sql?

Должен ли я использовать mysql_real_escape_string?

Я читал о подготовленных заявлениях, но это кажется сложным, и мы используем эти переменные по всему месту на сайте с большим количеством страниц и запросов. Прохождение и замена их просто не жизнеспособны в краткосрочной или среднесрочной перспективе.

Если бы был альтернативный способ проверки данных без подготовленных заявлений, любые советы были бы высоко оценены.

Заранее спасибо.

+0

Какую версию PHP вы используете? – BlitZ

+0

Вы должны использовать 'mysqli' или' pdo' вместо старых и скоро устаревать 'mysql' функции. – Cyclonecode

+1

использование подготовленных заявлений проверить это http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php/14110189#14110189 –

ответ

4

Это что-то для предотвращения инъекций sql?

No.

Должен ли я использовать mysql_real_escape_string?

Номер

Если есть альтернативный способ.

No.
Каждый способ потребует переписывания всего кода - это так или иначе.

Однако выбор за вами.
Если ценность сайта не стоит усилий, чтобы переписать его правильно - хорошо, сохраните его как есть.
Если значение высокое - попробуйте нанять кого-то, чтобы сделать работу, например.