|
|
|
| Подскажите пожадуйста, как проверить переменную $_SERVER['QUERY_STRING'] на основные MySQL команды: SELECT, INSERT, DELETE, UPDATE и т.д. А если переменная содержит таковые, то остановить выполнение сценария.
Если у вас есть другие идеи по избежанию MySQL иньекций, то буду очень признателен.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: golovdinov
(05.01.2007 в 18:34)
| | А зачем серверу скрипт запроса в MySQL, если он не может не посомтреть записи не добавить, не удалить, не обновить?
Тогда смысл запроса? | |
|
|
|
|
|
|
|
для: Бамси
(05.01.2007 в 18:39)
| | Я наверное неточно выразился. Я имел ввиду вариант когда в какой-нибудь из переменных передается MySQL иньекция, а сама переменная не обрабатывается и в чистом виде передается в запрос к БД mysql_query.
<?
$user = $_GET['name'];
$get_user = mysql_query ("SELECT * FROM users WHERE name = '$user'");
...
?>
|
| |
|
|
|
|
|
|
|
для: golovdinov
(05.01.2007 в 18:46)
| | Я делал так для чисел
<?php
preg_match("#(\d+)#",$_GET['user_id'],$user_arr);
$user_id = $user_arr[1];
?>
|
а для имён можно прег_реплейс как нибудь осуществить)) | |
|
|
|
|
|
|
|
для: golovdinov
(05.01.2007 в 18:46)
| |
<?php
//Если запрос вида "SELECT * FROM `tbl` WHERE `string` = '".$string."';"
if(!get_magic_quotes_gpc())
{
$string = mysql_escape_string($_GET['string']);
}
//Если запрос вида "SELECT * FROM `tbl` WHERE `num` = ".$num.";", то лучше так:
$flnum = (float) $_GET['flnum']; //Дробное
$num = (int) $_GET['num']; //Целое число
?>
|
| |
|
|
|
|
|
|
|
для: golovdinov
(05.01.2007 в 18:46)
| | для чисел гораздо проще наверное так:
$user = intval($_GET['name']);
|
если допустимым является диапазон значений
- укажите его при проверке
если допустимыми являются определённые значения
- создайте массив и проверте на наличие - вводимое пользователем число.
В любом случае не для чисел лечше всегда делать вот так:
$user = str_replace("'", "`", $user);
|
- это как минимум | |
|
|
|
|
|
|
|
для: fraggedbynoob
(07.01.2007 в 05:06)
| | для чисел гораздо проще наверное так:
Абсоюлютно никакой разницы.
В любом случае не для чисел лечше всегда делать вот так:
Никогда так не делайте. Для этого есть mysql_escape_string(). | |
|
|
|