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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Безопасна ли обработка формы?

Сообщения:  [1-9] 

 
 автор: Trianon   (24.02.2009 в 10:17)   письмо автору
 
   для: kis-kis   (24.02.2009 в 10:16)
 

Почему Вы считаете, что корректно оформлять нужно лишь те константы в SQL-запросе, которые зависят от пользователя?

  Ответить  
 
 автор: kis-kis   (24.02.2009 в 10:16)   письмо автору
 
   для: Trianon   (22.02.2009 в 11:37)
 

>>У Вас $event[id] и $adata через через mysql_escape_string() не пропущены.

Так ведь они не зависят от пользователя?

  Ответить  
 
 автор: Trianon   (23.02.2009 в 00:04)   письмо автору
 
   для: Loki   (22.02.2009 в 23:36)
 

а фига - это вообще из итальянского :-P

  Ответить  
 
 автор: Loki   (22.02.2009 в 23:36)   письмо автору
 
   для: Trianon   (22.02.2009 в 11:37)
 

>Есть очень простое правило.
Фига. Даже я это правило понял с трудом, хотя вроде знаю о чем речь:)

  Ответить  
 
 автор: Trianon   (22.02.2009 в 11:37)   письмо автору
 
   для: kis-kis   (22.02.2009 в 11:17)
 

Есть очень простое правило.
Любое значение, которое вы окружаете апострофами в тексте SQL-запроса, должно быть непосредственно перед этим пропущенно через mysql_escape_string()

Любое значение, которое вы вставляете в текст, не окружая апострофами, должно быть ограничено лексически (то есть являться именно числом - если Вы хотите подставить число, именно конкретным ключевым словом, если хотите подставить это ключевое слово, и т.д.)

У Вас $event[id] и $adata через через mysql_escape_string() не пропущены.

$r_type зачем-то взят в апострофы, хотя Вы его ограничили до целого.
То же самое, видимо, и с $approve.

А форма тут вообще не при чем.

  Ответить  
 
 автор: cheops   (22.02.2009 в 11:22)   письмо автору
 
   для: kis-kis   (17.02.2009 в 16:20)
 

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

  Ответить  
 
 автор: kis-kis   (22.02.2009 в 11:17)   письмо автору
 
   для: kis-kis   (17.02.2009 в 19:19)
 

up

  Ответить  
 
 автор: kis-kis   (17.02.2009 в 19:19)   письмо автору
 
   для: kis-kis   (17.02.2009 в 16:20)
 

Плиз, подскажите...

  Ответить  
 
 автор: kis-kis   (17.02.2009 в 16:20)   письмо автору
 
 

Форма:

<table class="add_review">
  <tr> 
    <td>Ваше имя:<font color="#FF0000">*</font></td>
    <td> 
      <input type="text" name="your_name" size="40" value="">
    </td>
  </tr>
  <tr> 
    <td>Рецензия:<font color="#FF0000">*</font></td>
    <td> 
      <input type="radio" name="rtype" value="0">
      - <span style="color: green;">положительная</span> 
      <input type="radio" name="rtype" value="1">
      - <span style="color: red;">отрицательная</span> </td>
  </tr>
  <tr> 
    <td>Текст рецензии:<font color="#FF0000">*</font></td>
    <td> 
      <textarea name="your_review" cols="50" rows="8"></textarea>
    </td>
  </tr>
  <tr> 
    <td>&nbsp;</td>
    <td> 
      <input type="submit" name="Submit" value="Добавить">
    </td>
  </tr>
</table>


Обработка:


$u_name = mysql_escape_string($_POST['your_name']); 
$u_review = mysql_escape_string($_POST['your_review']); 
$rtype = intval($_POST['rtype']);
$adata = date("Y-m-d H:i:s");
$u_ip = mysql_escape_string(getenv("REMOTE_ADDR"));
if ($mmn_rev_event == "yes") { $approve = '0'; } else { $approve = '1'; }
if ($rtype > '1') $rtype = "1";

$query_add = "INSERT INTO `reviews` (`event_id`, `us_name`, `us_mess`, `rev_type`, `add_date`, `us_ip`, `approve`)
VALUES ('$event[id]', '$u_name', '$u_review', '$rtype', '$adata', '$u_ip', '$approve')";
$req_add = mysql_query($query_add) or die("Error:<b> ". mysql_error()." </b>in file <b>".__FILE__."</b> on line <b>".__LINE__);


Спасибо.

  Ответить  

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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