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

HTML+CSS+JavaScript

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

 

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

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

тема: Обработка текста перед записью
 
 автор: Valleri   (10.07.2011 в 12:12)   письмо автору
 
 

Для безопасности!!!
Какую обязательно обработку надо с текстом сделать переда записью в базу

  Ответить  
 
 автор: cheops   (10.07.2011 в 13:42)   письмо автору
 
   для: Valleri   (10.07.2011 в 12:12)
 

Вы хотите при помощи JavaScript осуществить эту обработку? Дело в том, что если вас будут ломать, то использовать будут ПО/Скрипт, который пойдет не только в обход JavaScript, но и в обход HTML-формы, просто обратятся при помощи сокетов напрямую к обработчику. Вы можете осуществлять проверку при помощи JavaScript, но их придется дублировать на сервере, за которым в плане безопасности и должно оставаться последнее слово.

  Ответить  
 
 автор: Valleri   (10.07.2011 в 14:17)   письмо автору
 
   для: cheops   (10.07.2011 в 13:42)
 

Какую обработку обязательно надо сделать перед записью в базу(после получения от клиента формы)
Является ли обязательными
. длина строк
. Кодировка строк
. Раскладка,
. Очистить от HTML PHP strip_tags
Чем дополнить список обязательной проверки данных формы для безопасности и защиты от атак

  Ответить  
 
 автор: cheops   (10.07.2011 в 14:57)   письмо автору
 
   для: Valleri   (10.07.2011 в 14:17)
 

Первые три параметра - на ваше усмотрение, они избыточны, но никто про вас плохо не скажет, если вы их реализуете.
Четвертый параметр обычно реализует перед выводом, а не перед помещением в базу данных, так HTML-код и PHP-тэги не влияют на базу данных. А чем ближе вы храните текст к оригиналу - тем проще вам жить - испортить текст всегда успеете.
В обязательном порядке нужно защититься от SQL-инъекции, даже если злоумышленику у вас него брать из базы. Т.е. числа должны быть числами, а строки перед помещением в запрос должны быть экранированы, причем экранированы корректно (с учетом включенного или выключенного режима магических кавычек PHP).

  Ответить  
 
 автор: Valleri   (10.07.2011 в 15:27)   письмо автору
 
   для: cheops   (10.07.2011 в 14:57)
 

Хорошо. Тогда при выводе обязательной для защиты от атак( сточки зрения безопасности а не красоты) какая будет операция

  Ответить  
 
 автор: cheops   (10.07.2011 в 15:32)   письмо автору
 
   для: Valleri   (10.07.2011 в 15:27)
 

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

  Ответить  
 
 автор: Valleri   (10.07.2011 в 15:55)   письмо автору
 
   для: cheops   (10.07.2011 в 15:32)
 

Понятно. Хорошо.
А если надо хранить в файле, как с переводами строк быть, \n.

htmlspecialchars() у меня почему то сущности, если они в базе, превращает в теги, например, &lt;br /&gt; => <br />

А у вас нормально!
Как перевод строк хранить в текстовом файле?

  Ответить  
 
 автор: cheops   (10.07.2011 в 16:44)   письмо автору
 
   для: Valleri   (10.07.2011 в 15:55)
 

>Понятно. Хорошо.
>А если надо хранить в файле, как с переводами строк быть, \n.
По разному поступают, а в чем проблема, хотите в одной текстовой строке хранить строки с переводами? Тогда придется их экранировать, т.е. заменить \n на \\n.

>у меня почему то сущности, если они в базе, превращает в теги, например, &lt;br /&gt; => <br />
Это при выводе? Ну это нормально, в этом и суть, вот если бы у вас <br /> превращался в первод строки - это неправильно. Суть в том, что текст нужно хранить в базе данных без изменений, иначе при редактировании - вы с ним с ума сойдете. htmspecialchars() следует использовать при выводе из базы данных, да это труднее, чем обработать его один раз при помещении в базу данных, но это окупается с лихвой.

  Ответить  
 
 автор: Valleri   (10.07.2011 в 17:06)   письмо автору
 
   для: cheops   (10.07.2011 в 16:44)
 

Уже башка кипит. Кажется сложнее места не было.
А источник тут - перевод строк из-за файла!!!
Упертое место

Еще экперимент. \n заменить на<br/> в файле.
При выводе htmspecialchars()
Истина в последней инстанции, опыт и знание опыта критерий истины.
Как в тут или....опять ...новый эксперимент и вновь повторяется бой

  Ответить  
 
 автор: cheops   (10.07.2011 в 17:17)   письмо автору
 
   для: Valleri   (10.07.2011 в 17:06)
 

С переводами строк в файлах вообще все не просто, так как файлы могут быть открыты в бинарном или текстовом режимах. В текстовом режиме переводы строк автоматически приводятся к требованиям операционных систем, т.е. в UNIX у вас \r\n заменяется на \n, а в Windows \n, заменяется на \r\n. Если вам нужно, чтобы переводы строк появились при выводе в HTML, то да придется заменять их на <br />, в PHP для этого даже функция есть nl2br(), фактически вывод обычно оформляют так
<?php
  
echo nl2br(htmspecialchars($text));
?>

  Ответить  
 
 автор: Valleri   (10.07.2011 в 17:34)   письмо автору
 
   для: cheops   (10.07.2011 в 17:17)
 

Да так и сделаю
А если посетитель ввел сущность.

Например &lt;br /&gt; или другую

Если её так сохранить, то при выводе в HTML будет<br/> , должно быть &lt;br /&gt;.
У меня уже груды тумана в голове, не знаю правильно ли объясняю свой вопрос?
Как обнаружить эти сущности и что с ними?

  Ответить  
 
 автор: cheops   (10.07.2011 в 18:03)   письмо автору
 
   для: Valleri   (10.07.2011 в 17:34)
 

Нет, не будет такого преобразования - амперсанд & тоже переводится htmlspecialchars() в HTML-представление &amp;, поэтому будет также как здесь, если ввели &lt;br /&gt;, то это и отобразится.

  Ответить  
 
 автор: sl1p   (10.07.2011 в 16:52)   письмо автору
 
   для: Valleri   (10.07.2011 в 15:55)
 

htmlspecialchars не трогает переводы строк

  Ответить  
Rambler's Top100
вверх

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