Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2009, 21:13   #1
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию Защита. Обработка пользовательских данных.

Доброго времени суток.

Положим у нас есть какая-то форма, посредством которой юзер может оставить сообщение на сайте. Понятно, что данные, получаемые таким образом от юзера нужно обрабатывать.

Я сделал так:

Файл добавления сообщения в базу:

PHP код:
<?php
error_reporting
(E_ALL);
include 
"config.php";
require 
"inc.php";

# П Р О В Е Р К А   У С Л О В И Й
$action $_POST['action'];
if (!empty(
$action))
{  
   
# Проверка ИМЕНИ
   
if (empty($_POST['name_com']))
   {
    echo 
"Введите ваше имя";
   }
   
$name_com null;
   if (isset(
$_POST['name_com']))
   {
     if (
'' !=trim($_POST['name_comm']))
     {
       if (
get_magic_quotes_gpc())
       {
         
$_POST['name_com'] = stripslashes($_POST['name_com']);  
       }
       
$name_com mysql_real_escape_string($_POST['name_com']);
     }
   } 
   
# Проверка СООБЩЕНИЯ
   
if (empty($_POST['comm']))
   {
    echo 
"Введите текст комментария";
   }
   
$comm null;
   if (isset (
$_POST['comm']))
   {
     if (
''!=trim($_POST['comm']))
     {
        
$comm mysql_real_escape_string($_POST['comm']);
     }
     
$comm substr($_POST["comm"],0,1000);
   } 

}
# Если лезут через адресную строку
else 
{
 exit;
}

# Функция обработки ВВ-тегов
bbTagToTag($comm);

$name_com htmlspecialchars($_POST['name_com']);

$query "INSERT INTO comments (id_news, date_com, name_com, comm, new) 
          VALUES (
$id,now(), '$name_com', '$comm','new')";

if (
mysql_query($query))
{
 
header("Location: comments.php?id=$id");
}
else 
 {
  echo 
"can't add to table<br>";
  echo 
mysql_error();
 }
 
?>
И кусочек из функции обработки ВВ-тегов:

PHP код:
 $message htmlspecialchars($message);
 if (
get_magic_quotes_gpc())
 {
  
$message stripslashes($message);
 } 
Достаточно ли этого, чтобы обеспечить сайту нормальную защиту?
Какие ещё есть способы напоганить, кроме как ввода через адресную строку и ввода в форму всяческих яваскриптов?
Amen вне форума Ответить с цитированием
Старый 31.10.2009, 19:37   #2
Revival001
Форумчанин
 
Регистрация: 30.09.2008
Сообщений: 483
По умолчанию

XSRF еще бывает. Ну в принципе в этом случае не очень опасно. Лучше еще добавить что-то типа капчи (может я не заметил?), и ограничение по времени, например не более 1 сообщения в минуту итп. Чтобы было тяжелее спамить базу.
Revival001 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура данных и защита листа Legame Microsoft Office Excel 47 25.06.2019 11:03
Криптографическая защита данных BROOKS Помощь студентам 2 19.10.2009 21:18
Защита Персональных Данных BARNEY Безопасность, Шифрование 29 01.10.2009 15:59
Защита данных StudentMarat Microsoft Office Excel 1 15.07.2009 11:40
Защита персональных данных Arvenka Помощь студентам 1 06.07.2009 08:43