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

Форум PHP

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

 

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

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

тема: Фильтрация сообщений
 
 автор: 70-й_регион   (24.07.2006 в 15:39)   письмо автору
 
 

Всем привет.
Потскажите как правельно отфильтровать сообщения в php в чатах.
Знаю только htmlspecialchars но говорят что это легко ломается.

   
 
 автор: cheops (из кафе)   (24.07.2006 в 16:14)
 
   для: 70-й_регион   (24.07.2006 в 15:39)
 

От чего фильтруем и где хранятся сообщения (в файлах или базе данных)?

   
 
 автор: 70-й_регион   (24.07.2006 в 17:19)   письмо автору
 
   для: cheops (из кафе)   (24.07.2006 в 16:14)
 

Сообщения хранятся в файлах и базе фельтруем от влома

   
 
 автор: cheops (из кафе)   (24.07.2006 в 17:24)
 
   для: 70-й_регион   (24.07.2006 в 17:19)
 

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

А файлы какую структуру имееют? Нет возможности у пользователя вставить лишний пробел, который нарушит структуру файла и вместо одной записи сделает две?

PS перед выводом в окно браузера текст необхдимо прогонять через функцию htmlspecialchars().

   
 
 автор: 70-й_регион   (24.07.2006 в 17:52)   письмо автору
 
   для: cheops (из кафе)   (24.07.2006 в 17:24)
 

Спасибо понятно.
Файлы использую в чате для хранения всех сообщений за день.
Их кроме меня ни кто не смотрит.

   
 
 автор: Expier   (24.07.2006 в 18:07)   письмо автору
 
   для: cheops (из кафе)   (24.07.2006 в 17:24)
 

а если использовать htmlspecialchars() с параметром ENT_QUOTES (замена всех кавычек на их коды)? не убережет это от SQL-инъекции?

И еще такой вопрос.
Я обрабатываю все поля ввода перед тем как их поместить в базу следующим образом:

<?
 
function secure_txt($str){
  
$str strip_tags($str);
  
$str stripslashes($str);
  
$str htmlspecialchars($strENT_QUOTES);
  return(
$str);
 }
?>

Достаточно ли этого? Можно сказать что, в принципе сайт защищен от атак?
И второй вопрос: нужно ли при выводе этих данных из базы применять еще какие-то функции. Или хватит начальной проверки (перед вставкой в базу)?

   
 
 автор: cheops (из кафе)   (24.07.2006 в 18:18)
 
   для: Expier   (24.07.2006 в 18:07)
 

>а если использовать htmlspecialchars() с параметром ENT_QUOTES (замена всех кавычек на их
>коды)? не убережет это от SQL-инъекции?
Не от всякой, от той, которая идёт по числовому параметру (который, как правило, в кавычки не помещается), то может и не уберечь - там SQL-инъекция кавычки неиспользует.

   
 
 автор: Владимир22   (24.07.2006 в 18:54)   письмо автору
 
   для: cheops (из кафе)   (24.07.2006 в 18:18)
 

А как тогда защищать числовые данные? Т.е. они в базе должны быть как int? И какая функция обработки должна использоваться.
И тогда ещё: mysql_escape_string и htmlspecialchars - это одно и тоже?
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data=addslashes($data);
$data = mysql_escape_string($data);

Такой код может быть универсальной защитой от любых инъекций?

   
 
 автор: cheops   (24.07.2006 в 22:41)   письмо автору
 
   для: Владимир22   (24.07.2006 в 18:54)
 

Числовые данные можно защитить например при помощи конструкции
<?php
  
if(!preg_match("|^[\d]+$|",$id_post)) exit();
?>

   
Rambler's Top100
вверх

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