|
|
|
| привет!
узнал что якобы если БД в юникоиде то легко можно ввести код символа например код кавычек %65 или что то типа .. и они легко запишутся в БД...
и во избежании этого всего нужно использовать mysql_real_escape_string (mysql_SUPER_REAL_escape_string) или DBI - что такое это?
хотелось бы услышать ваши комментари | |
|
|
|
|
|
|
|
для: mindless
(19.12.2006 в 20:56)
| | Не понятен вопрос, что хотите узнать? Обстоятельство использования функций mysql_escape_string(), htmlspecialchars() или UTF-8? | |
|
|
|
|
|
|
|
для: cheops
(19.12.2006 в 22:45)
| | про то насколько это реально занести кавычки через код символа для юникоид базы обойдя htmlspecialchars | |
|
|
|
|
|
|
|
для: mindless
(20.12.2006 в 01:19)
| | Функция htmlspecialchars() имеет второй не обязательный параметр, через который можно управлять преобразованием кавычек:
ENT_NOQUOTES - двойные и одинарные кавычки остаются без изменений;
ENT_COMPAT - двойные кавычки заменяются на символ "
ENT_QUOTES - двойные кавычки заменяются на символ ", а одиночные на символ '
Т.е. используя последний режим вы можете преобразовать все кавычки в безопасную форму
<?php
$text = htmlspecialchars($text, ENT_QUOTES);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(20.12.2006 в 02:17)
| | не экранирует символы % и _. Эти знаки являются масками групп символов в операторах MySQL LIKE, GRANT или REVOKE.
так типаа через % код символа можно внести кавычки | |
|
|
|
|
|
|
|
для: mindless
(20.12.2006 в 11:19)
| | Двойную кавычку можно %22 одиночная не имеет конвертации через %. | |
|
|
|
|
|
|
|
для: mindless
(20.12.2006 в 11:19)
| | >так типаа через % код символа можно внести кавычки
Все символы, которые в URL начинаются с %, декодируются автоматически и превращаются в пробелы и кавычки - если вы обрабатываете такой код при помощи htmlspecialchars() в приведённом выше варианте - опасности нет.
>не экранирует символы % и _. Эти знаки являются масками групп символов в операторах MySQL
>LIKE, GRANT или REVOKE.
Вам зачем их экранировать? С их попомощью всё равно ничего нельзя сделать, только если вы не используете LIKE там, где разумнее использовать =. В любом случае если ожидаете единственный результат, то добавляйте конструкцию LIMIT 1 (это признак хорошего тона).
Если не хотите использовать htmlspecialchars() перед заненесением информации в базу данных (а это разумно, так как её неудобно будет редактировать), используйте конструкцию
<?php
if (!get_magic_quotes_gpc())
{
$name = mysql_escape_string($name);
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(20.12.2006 в 12:44)
| | спасибо!
скажите а что такое DBI? | |
|
|
|
|
|
|
|
для: mindless
(20.12.2006 в 18:47)
| | DBI - это унифицированный программный интерфейс, который позволяет обращаться к разным базам данных, используя одни и те же функции, а зачастую и один и тот же код. Наиболее близким аналогом для него является ODBC, который продвигает Microsoft. DBI наиболее распространён в Perl, где является практически стандартом. | |
|
|
|