Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос о фильтрации входящих данных
 
 автор: KIM   (26.09.2006 в 20:57)   письмо автору
 
 

Функция htmlspecialchars() избавляет от html тегов, но не избавляет от символов ',\,/. Они разве не могут испортить что нибудь?

   
 
 автор: Crone   (26.09.2006 в 21:26)   письмо автору
 
   для: KIM   (26.09.2006 в 20:57)
 

Ну неужели сложно попробовать? ;-) Если всё-таки удастся испортить, то покажите, как Вы это сделали =)

   
 
 автор: WinT   (26.09.2006 в 22:02)   письмо автору
 
   для: Crone   (26.09.2006 в 21:26)
 

http://softtime.ru/forum/read.php?id_forum=1&id_theme=24285&page=11

   
 
 автор: cheops   (27.09.2006 в 00:02)   письмо автору
 
   для: KIM   (26.09.2006 в 20:57)
 

Если мешает одиночная кавычка (а она может натворить бед), в качестве второго параметра функции htmlspecialchars() следует передать константу ENT_QUOTES.
<?php
  
echo htmlspecialchars($textENT_QUOTES);
?>

   
 
 автор: KIM   (27.09.2006 в 08:48)   письмо автору
 
   для: KIM   (26.09.2006 в 20:57)
 

Спасибо! "Переварив" всё это я окончательно понял, что этого достаточно чтобы защитить сайт от входящих данных (именно вход. данных):


<?php 
$text  
mysql_escape_string(nl2br(trim(stripslashes(htmlspecialchars(substr($_POST['text'], 01000), ENT_QUOTES))))); 
?> 


Короче достаточно бработать данные с помощью:

mysql_escape_string - для защиты БД
nl2br - для форматированности, так сказать
trim - для удаления лишних пробелов
stripslashes - защита от перла
htmlspecialchars - защита от ява скриптов и от бейсика
substr - даю лимит на длину

Этого должно хватить? А вдруг есть что то чего я не знаю...

   
 
 автор: Thrasher   (27.09.2006 в 10:11)   письмо автору
 
   для: KIM   (27.09.2006 в 08:48)
 

Небольшое замечание:
функции htmlspeciachars( ) и nl2br( ) желательно использовать при выводе информации из базы в браузер, а не при записи в базу. Информацию в базе лучше хранить в первоначальном виде. HTML - теги при записи в базу не навредят, они могут навредить только в браузере, соответственно их преобразовывать нужно перед выводом.

   
 
 автор: cheops   (27.09.2006 в 11:22)   письмо автору
 
   для: KIM   (27.09.2006 в 08:48)
 

Нет, так поступать не следует mysql_escape_string() и stripslashes() взаимоуничтожают свою работу. Данный код целесообразно использовать перед помещением в файл или базу данных
<?php
  $text 
trim(substr($_POST['text'], 01000);
  if (!
get_magic_quotes_gpc())
  {
    
$text  mysql_escape_string($text);
  }
?>

При выводе информации из базы данных следует использовать nl2br() и htmlspecialchars(). Иначе если вам потребуется отредактировать данные - будут трудности, а если на сервере отключён режим магических кавычек возможна SQL-инъекция.

   
 
 автор: KIM   (28.09.2006 в 20:44)   письмо автору
 
   для: 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;
}

   
 
 автор: Саня   (29.09.2006 в 00:02)   письмо автору
 
   для: 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_textENT_QUOTES);
  return 
nl2br($filter_text);
}

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования