от
При выполнении SQL-запроса, вы должны очистить ваши строки или пользователи могут выполнять вредоносные SQL на ваш сайт. Я обычно просто есть функция escape_string(БЛА), которые: Заменяет убегает (
\
) с двойной побег (
\\
). Заменяет одинарные кавычки (
'
) со сбежавшим одинарная кавычка (
\'
). Адекватен ли он? Есть дыра в моем коде? Есть ли библиотеки, которые могут сделать это быстро и надежно для меня? Я бы хотел увидеть изящные решения в Perl, Java и PHP.

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

12 Ответы

0 голосов
от
При выполнении SQL-запроса, вы должны очистить ваши строки или пользователи могут выполнять вредоносные SQL на ваш сайт. Я обычно просто есть функция escape_string(БЛА), которые: Заменяет убегает (
\
) с двойной побег (
\\
). Заменяет одинарные кавычки (
'
) со сбежавшим одинарная кавычка (
\'
). Адекватен ли он? Есть дыра в моем коде? Есть ли библиотеки, которые могут сделать это быстро и надежно для меня? Я бы хотел увидеть изящные решения в Perl, Java и PHP.
0 голосов
от
Для обеспечения максимальной безопасности, производительности, и использовать правильность подготовленной отчетности. Вот как сделать это с большим количеством примеров на разных языках, включая PHP: https://stackoverflow.com/questions/1973/what-is-the-best-way-to-avoid-sql-injection-attacks
0 голосов
от
Я также хотел бы избежать комментариев (двойные черточки)
0 голосов
от
Большая вещь, чтобы использовать в PHP-ПДО. Это занимает много догадок из борьбы с обеспечения безопасности в SQL (и все ваши SQL вещи в целом). Он поддерживает подготовленные выражения, которые идут длинный путь к срыву атак путем внедрения кода SQL. Отличное руководство по ПДО включен в Книгу Антология РНР 101 основные советы, хитрости и усилитель; хаки по Шафик Дэйви и т. д. 2-е изд. Делает обучение на одном дыхании и отлично подходит в качестве эталона. Я даже не придется думать о чем угодно кроме реальных запросов SQL больше.
0 голосов
от
Какой язык используете? Похоже, почти все из них имеют встроенные функции SQL побег, что будет лучше использовать. Например, у PHP addslashes и использования mysql_real_escape_string.
0 голосов
от
Вы лучше использовать подготовленные операторы с местозаполнителями. Ты с помощью PHP, .Чистая...в любом случае, подготовленные заявления обеспечить более высокий уровень безопасности, но я могу предоставить образец.
0 голосов
от
В PHP, я использую этот один, и я ценю каждый комментарий по этому поводу :
function quote_smart($valeur) 
{ 
    if (get_magic_quotes_gpc()) 
        $valeur = stripslashes($valeur); 

    if (!is_numeric($valeur)) 
        $valeur = mysql_real_escape_string($valeur); 

    return $valeur; 
}


$IdS = quote_smart($_POST['theID']); 
$sql = " 
SELECT * FROM Students 
WHERE IdStudent={$IdS}; 
";
Нужна еще одна проверка, если поле может быть null :
$picture = NULL;
$theidyouwant = 7;
$Name = 'WOOD';


if(is_null($picture)) 
    $p = 'NULL'; 
else
    $p = "'".quote_smart($picture)."'"; 

$IdS = quote_smart($theidyouwant);

$requete = "SELECT * FROM Students
    WHERE IdStudent={$IdS} AND
    PictureStudent={$p} AND
    NameStudent='{$Name}';
    ";
Вот и все наслаждайтесь ! (надеюсь, пост будет правильно отправить подчеркивания и не
0 голосов
от
Использовать приготовленное/параметризованные запросы!
0 голосов
от
Использовать подготовленные операторы.
0 голосов
от
В запрос MySQL, при использовании, как, и убедиться, чтобы спастись от "_" символов, так как он не сбежал от использования mysql_real_escape_string. Для справки, посмотрите здесь
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...