|
|
|
| Функция htmlspecialchars() избавляет от html тегов, но не избавляет от символов ',\,/. Они разве не могут испортить что нибудь? | |
|
|
|
|
|
|
|
для: KIM
(26.09.2006 в 20:57)
| | Ну неужели сложно попробовать? ;-) Если всё-таки удастся испортить, то покажите, как Вы это сделали =) | |
|
|
|
|
|
|
|
|
для: KIM
(26.09.2006 в 20:57)
| | Если мешает одиночная кавычка (а она может натворить бед), в качестве второго параметра функции htmlspecialchars() следует передать константу ENT_QUOTES.
<?php
echo htmlspecialchars($text, ENT_QUOTES);
?>
|
| |
|
|
|
|
|
|
|
для: KIM
(26.09.2006 в 20:57)
| | Спасибо! "Переварив" всё это я окончательно понял, что этого достаточно чтобы защитить сайт от входящих данных (именно вход. данных):
<?php
$text = mysql_escape_string(nl2br(trim(stripslashes(htmlspecialchars(substr($_POST['text'], 0, 1000), ENT_QUOTES)))));
?>
|
Короче достаточно бработать данные с помощью:
mysql_escape_string - для защиты БД
nl2br - для форматированности, так сказать
trim - для удаления лишних пробелов
stripslashes - защита от перла
htmlspecialchars - защита от ява скриптов и от бейсика
substr - даю лимит на длину
Этого должно хватить? А вдруг есть что то чего я не знаю... | |
|
|
|
|
|
|
|
для: KIM
(27.09.2006 в 08:48)
| | Небольшое замечание:
функции htmlspeciachars( ) и nl2br( ) желательно использовать при выводе информации из базы в браузер, а не при записи в базу. Информацию в базе лучше хранить в первоначальном виде. HTML - теги при записи в базу не навредят, они могут навредить только в браузере, соответственно их преобразовывать нужно перед выводом. | |
|
|
|
|
|
|
|
для: KIM
(27.09.2006 в 08:48)
| | Нет, так поступать не следует mysql_escape_string() и stripslashes() взаимоуничтожают свою работу. Данный код целесообразно использовать перед помещением в файл или базу данных
<?php
$text = trim(substr($_POST['text'], 0, 1000);
if (!get_magic_quotes_gpc())
{
$text = mysql_escape_string($text);
}
?>
|
При выводе информации из базы данных следует использовать nl2br() и htmlspecialchars(). Иначе если вам потребуется отредактировать данные - будут трудности, а если на сервере отключён режим магических кавычек возможна SQL-инъекция. | |
|
|
|
|
|
|
|
для: KIM
(26.09.2006 в 20:57)
| | Вот окончательный (надеюсь) вариант защиты
Эту функцию использовать перед записью данных в БД
function filter1($filter_text)
{
$filter_text = trim($filter_text);
$filter_text = substr($filter_text,0,3000);
$filter_text = mysql_escape_string($filter_text);
result $filter_text;
}
|
Эту функцию использовать перед выводом данных из БД
function filter2($filter_text)
{
$filter_text = htmlspecialchars($filter_text, ENT_QUOTES);
$filter_text = stripslashes($filter_text);
$filter_text = nl2br($filter_text);
result $filter_text;
}
|
| |
|
|
|
|
|
|
|
для: KIM
(28.09.2006 в 20:44)
| | Да, всё замечательно. Только лучше stripslashes() делать при добавлении в базу, а из функции вывода убрать. И что за странный оператор result?
<?
function filter1($filter_text) {
$filter_text = trim($filter_text);
$filter_text = substr($filter_text,0,3000);
if ( get_magic_quotes_gpc() ) $filter_text = stripslashes($filter_text);
return mysql_escape_string($filter_text);
}
function filter2($filter_text) {
$filter_text = htmlspecialchars($filter_text, ENT_QUOTES);
return nl2br($filter_text);
}
|
| |
|
|
|