2010-12-12 2 views
1

Должен ли mysql_real_escape избегать использования переменных для всех запросов к базе данных?mysql_real_escape по запросам

+2

Неа. mysql_real_escape_string применим только для строк с разделителями с котировкой и бесполезно для чего-либо еще –

+0

У кого есть эти вопросы? – mario

+0

@mario - возможно, кто-то ищет значок с вопросом, связанным с голосованием. –

ответ

5

Да, всегда избегайте переменных, которые вы передаете в запросы.

Еще лучше использовать PDO:

<?php 
/* Execute a prepared statement by binding PHP variables */ 
$calories = 150; 
$colour = 'red'; 
$sth = $dbh->prepare('SELECT name, colour, calories 
    FROM fruit 
    WHERE calories < :calories AND colour = :colour'); 
$sth->bindParam(':calories', $calories, PDO::PARAM_INT); 
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12); 
$sth->execute(); 
?> 

Таким образом, вам не нужно иметь дело с побега (если у вас есть вопросы, которые требуют особого ухода).

Но если вы настаиваете на использовании расширения MySQL, используйте mysql_real_escape_string().

+1

'SELECT * FROM users WHERE id = $ id;' Как избежать помощи здесь? –

+0

@ Col.shrapnel Я говорил об этом виде запроса. –

1

Да, вы должны избегать всех переменных по соображениям безопасности. Экранирование номеров и т. Д. Ничего не меняет, поэтому нет проблем с их побегом. Вам следует избегать всего, поскольку в противном случае вы можете случайно пропустить любую переменную. Я предлагаю использовать mysql_real_escape_string()-function PHP или PDO prepared statements.

2

Должны ли вы всегда защищать аргументы запроса? Да.
Должны ли вы всегда использовать mysql_real_escape_string? Номер

Если вы не собираетесь использовать prepared statements, рассмотреть вопрос об использовании mysqli_real_escape (возражаете я для улучшилось) для кодирования строки, содержащие NUL (ASCII 0), \n, \r, \, ', " , и Control-Z. Однако могут потребоваться дополнительные меры предосторожности.

- это активно развиваемое расширение mysql в настоящее время. У старого MySQL-расширения есть только периодические исправления, но уже давно не активно развивается.

Смотрите эти две обучающие программы на DevZone (но также отмечают, что обе статьи являются древними по стандартам Интернет)

+0

Спасибо, я воспользуюсь этим. –

Смежные вопросы