SQL инъекции.
-
veter48
SQL инъекции.
Здравствуйте, подскажите, пожалуйста, как правильно оформлять sql запросы на php, чтобы избежать SQL инъекций. Спасибо.
-
veter48
Re: SQL инъекции.
Здравствуйте.
Для числовых значений используйте int или float, а для строковых mysql_real_escape_string.
Это 100% защита от sql-инъекций.
Но не забывайте об других
Для числовых значений используйте int или float, а для строковых mysql_real_escape_string.
Это 100% защита от sql-инъекций.
Но не забывайте об других

-
WebGraf
-
mr.Morgan
Re: SQL инъекции.
Спасибо.
Цитата:
Но не забывайте об других
Можете, пожалуйста коротко рассказать о каких?
Цитата:
Но не забывайте об других
Можете, пожалуйста коротко рассказать о каких?
-
veter48
Re: SQL инъекции.
Цитата mr.Morgan:
Проверяй вводимые данные функциями strip_tags() и stripslashes()
Если без mysql_real_escape_string то это обеспечит 100% sql-инъекцию.
Если с то какой толк от них? Все что требуется mysql_real_escape_string выполняет.
Вы вообще документацию официальную читали
А форумы просматриваете
Видимо нет, так как несете полную чушь. Никакой безопасности эту функции не обеспечивают, да и предназначены совсем для других целей. Сами не знаете и еще других вводите в заблуждение.
mysql_real_escape_string - функция написана специально для защиты от sql-инъекций, другого предназначения у нее нету. Или вы, ув. mr.Morgan, несогласны с разработчиками PHP, считаете себя умнее? А с разработчиками Perl, которые также написали функцию для защиты а не используют пхпшные аналоги stripslashes?
Цитата veter48:
Цитата:
Но не забывайте об других
Можете, пожалуйста коротко рассказать о каких?
XSS-инъекция
грубо говоря это вывод из базы кода, который отсылает ваши данные (при перебывании на странице) в другое место. Очень грубое описание, но думаю понятно будет.
Спасает htmlspecialchars с разными опциями.
Когда фильтровать данные с помощью htmlspecialchars?
При выводе из базы.
Все ли данные фильтровать?
Нет. Только те что попадают в базу не от вас а от пользователей и которые не проходят проверку регулярками.
Например, возьмем форум. При отправке сообщения в базу вносится логин и текст сообщения. Лоиг можно проверить регулярками чтобы не содержал ненужных символов. Т.е. разрешить только анг символы и цифры. Например, с помощью preg_match и выражения [a-z0-9\-]{3,16}.
А текст вносим как есть (естественно через mysql_real_escape_string), а при выводе htmlspesialchars($row['post'], ENT_QUOTES, 'UTF-8'). Можно конечно просто htmlspesialchars($row['post']), но не советую. В пхп ниже 5.3 функция по умолчанию работает с кодировкой ISO-8859-1, а в нашем случае пост содержит кириллицу. Кроме этого в пхп 5.3 и выше функция htmlspesialchars переведена по умолчанию на UTF-8. Т.е. если не указывать кодировку то при смене на сервере пхп 5.2 >> 5.3 скрипт откажется работать.
Проверяй вводимые данные функциями strip_tags() и stripslashes()
SQL инъекции.
Если без mysql_real_escape_string то это обеспечит 100% sql-инъекцию.
Если с то какой толк от них? Все что требуется mysql_real_escape_string выполняет.
Вы вообще документацию официальную читали
http://dev.mysql.com/doc/
?А форумы просматриваете
http://forums.mysql.com/
?Видимо нет, так как несете полную чушь. Никакой безопасности эту функции не обеспечивают, да и предназначены совсем для других целей. Сами не знаете и еще других вводите в заблуждение.
mysql_real_escape_string - функция написана специально для защиты от sql-инъекций, другого предназначения у нее нету. Или вы, ув. mr.Morgan, несогласны с разработчиками PHP, считаете себя умнее? А с разработчиками Perl, которые также написали функцию для защиты а не используют пхпшные аналоги stripslashes?
Цитата veter48:
Цитата:
Но не забывайте об других
Можете, пожалуйста коротко рассказать о каких?
SQL инъекции.
XSS-инъекция
грубо говоря это вывод из базы кода, который отсылает ваши данные (при перебывании на странице) в другое место. Очень грубое описание, но думаю понятно будет.
Спасает htmlspecialchars с разными опциями.
Когда фильтровать данные с помощью htmlspecialchars?
При выводе из базы.
Все ли данные фильтровать?
Нет. Только те что попадают в базу не от вас а от пользователей и которые не проходят проверку регулярками.
Например, возьмем форум. При отправке сообщения в базу вносится логин и текст сообщения. Лоиг можно проверить регулярками чтобы не содержал ненужных символов. Т.е. разрешить только анг символы и цифры. Например, с помощью preg_match и выражения [a-z0-9\-]{3,16}.
А текст вносим как есть (естественно через mysql_real_escape_string), а при выводе htmlspesialchars($row['post'], ENT_QUOTES, 'UTF-8'). Можно конечно просто htmlspesialchars($row['post']), но не советую. В пхп ниже 5.3 функция по умолчанию работает с кодировкой ISO-8859-1, а в нашем случае пост содержит кириллицу. Кроме этого в пхп 5.3 и выше функция htmlspesialchars переведена по умолчанию на UTF-8. Т.е. если не указывать кодировку то при смене на сервере пхп 5.2 >> 5.3 скрипт откажется работать.