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

Форум PHP

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

 

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

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

тема: htmlsecialchars до или после?
 
 автор: Akdmeh   (16.06.2010 в 19:48)   письмо автору
 
 

Добрый день.
Вышел небольшой спор.
Как вы считаете, что более оптимально - использовать htmlspecialchars перед записью в базу или после(типа для целосности)?
Да, в "целосности" есть свои плюсы, но ведь от этого и теряется производительность - ведь тогда htmlspecialchars надо использовать каждый раз при выводе, а если надо текст перевести назад - это можно запросто сделать с помощью html_entity_decode.
ваши мнения по этому поводу?

  Ответить  
 
 автор: Valick   (16.06.2010 в 19:50)   письмо автору
 
   для: Akdmeh   (16.06.2010 в 19:48)
 

htmlspecialchars надо использовать каждый раз при выводе в браузер

  Ответить  
 
 автор: Akdmeh   (16.06.2010 в 20:02)   письмо автору
 
   для: Valick   (16.06.2010 в 19:50)
 

Объясните, зачем, если можно один раз - при вносе в базу данных?

  Ответить  
 
 автор: neadekvat   (16.06.2010 в 20:05)   письмо автору
 
   для: Akdmeh   (16.06.2010 в 20:02)
 

Потому что данные в бд должны хранится в исходном виде.
А что делать, если решите подключить wysiwyg-редактор? html-сущности декодировать в html-тэги?

  Ответить  
 
 автор: Николай2357   (16.06.2010 в 20:58)   письмо автору
 
   для: Akdmeh   (16.06.2010 в 20:02)
 

Объясните, зачем, если можно один раз - при вносе в базу данных?
Дело не в том, что вносится в базу данных. Это здесь вторично.
Дело в том, что Вы выдаете пользователю. А именно в поток (браузер).

Если данные выдаются без обработки, то пользователь вашего сайта автоматически становится заложником ситуации. Вот такой к примеру.

1.У одного из администраторов трояном похитили доступ к базе данных
2. В базу данных напихали всякой бяки для XSS к примеру.
3. Вся эта бяка необработанной попала юзеру.

Если база большая (допустим как у этого форума), то искать эту дрянь может оказаться непосильной задачей. Хорошо если сразу хватился - бэкап. А если нет...

  Ответить  
 
 автор: ujcnmпгуые   (24.06.2010 в 19:08)
 
   для: Николай2357   (16.06.2010 в 20:58)
 

По мне так оба способа имеют право на жизнь и должны зависеть от решаемой задачи.

[поправлено модератором]

  Ответить  
 
 автор: Николай2357   (24.06.2010 в 19:50)   письмо автору
 
   для: ujcnmпгуые   (24.06.2010 в 19:08)
 

Бесспорно. Весьма вероятна ситуация, что вместо туалетной бумаги потребуется наждачная.
Возникнет такая задача... Но зачем так запускать то? :)

  Ответить  
 
 автор: mihdan   (21.06.2010 в 18:24)   письмо автору
 
   для: Akdmeh   (16.06.2010 в 19:48)
 

В базу вносить данные пропущенные через mysql_real_escape_string (если без MySQL - addslashes). При выводе же использовать html_special_chars (хотя это спорный вопрос, зависящий от задач).

  Ответить  
 
 автор: Trianon   (21.06.2010 в 21:28)   письмо автору
 
   для: Akdmeh   (16.06.2010 в 19:48)
 

Ваше заблуждение состоит в том, что Вы считаете, что htmlspecialchars (а)применяют после БД и (б) применяют для целостности.

На самом деле применяют эту функцию не [непосредственно] после БД, а непосредственно перед выводом в браузер. При чем перед выводом сырого (plain) текста в поток браузера при формировании документа типа text/html (то есть при выводе текста в поток кода гипертекстовой разметки).

Ну а уж применять её перед БД так и вовсе смысла нет.
В БД при этом окажется нередактируемый контент.

И еще одно замечание.
Не стоит браться что-то оптимизировать, не научившись сперва создавать корректный работоспособный код. Четко представляя себе, какую роль в этом коде играет каждый его символ.
Ранняя оптимизация - это вообще вредно.

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

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