|
|
|
| Добрый день.
Вышел небольшой спор.
Как вы считаете, что более оптимально - использовать htmlspecialchars перед записью в базу или после(типа для целосности)?
Да, в "целосности" есть свои плюсы, но ведь от этого и теряется производительность - ведь тогда htmlspecialchars надо использовать каждый раз при выводе, а если надо текст перевести назад - это можно запросто сделать с помощью html_entity_decode.
ваши мнения по этому поводу? | |
|
|
|
|
|
|
|
для: Akdmeh
(16.06.2010 в 19:48)
| | htmlspecialchars надо использовать каждый раз при выводе в браузер | |
|
|
|
|
|
|
|
для: Valick
(16.06.2010 в 19:50)
| | Объясните, зачем, если можно один раз - при вносе в базу данных? | |
|
|
|
|
|
|
|
для: Akdmeh
(16.06.2010 в 20:02)
| | Потому что данные в бд должны хранится в исходном виде.
А что делать, если решите подключить wysiwyg-редактор? html-сущности декодировать в html-тэги? | |
|
|
|
|
|
|
|
для: Akdmeh
(16.06.2010 в 20:02)
| | Объясните, зачем, если можно один раз - при вносе в базу данных?
Дело не в том, что вносится в базу данных. Это здесь вторично.
Дело в том, что Вы выдаете пользователю. А именно в поток (браузер).
Если данные выдаются без обработки, то пользователь вашего сайта автоматически становится заложником ситуации. Вот такой к примеру.
1.У одного из администраторов трояном похитили доступ к базе данных
2. В базу данных напихали всякой бяки для XSS к примеру.
3. Вся эта бяка необработанной попала юзеру.
Если база большая (допустим как у этого форума), то искать эту дрянь может оказаться непосильной задачей. Хорошо если сразу хватился - бэкап. А если нет... | |
|
|
|
|
автор: ujcnmпгуые (24.06.2010 в 19:08) |
|
|
для: Николай2357
(16.06.2010 в 20:58)
| | По мне так оба способа имеют право на жизнь и должны зависеть от решаемой задачи.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: ujcnmпгуые
(24.06.2010 в 19:08)
| | Бесспорно. Весьма вероятна ситуация, что вместо туалетной бумаги потребуется наждачная.
Возникнет такая задача... Но зачем так запускать то? :) | |
|
|
|
|
|
|
|
для: Akdmeh
(16.06.2010 в 19:48)
| | В базу вносить данные пропущенные через mysql_real_escape_string (если без MySQL - addslashes). При выводе же использовать html_special_chars (хотя это спорный вопрос, зависящий от задач). | |
|
|
|
|
|
|
|
для: Akdmeh
(16.06.2010 в 19:48)
| | Ваше заблуждение состоит в том, что Вы считаете, что htmlspecialchars (а)применяют после БД и (б) применяют для целостности.
На самом деле применяют эту функцию не [непосредственно] после БД, а непосредственно перед выводом в браузер. При чем перед выводом сырого (plain) текста в поток браузера при формировании документа типа text/html (то есть при выводе текста в поток кода гипертекстовой разметки).
Ну а уж применять её перед БД так и вовсе смысла нет.
В БД при этом окажется нередактируемый контент.
И еще одно замечание.
Не стоит браться что-то оптимизировать, не научившись сперва создавать корректный работоспособный код. Четко представляя себе, какую роль в этом коде играет каждый его символ.
Ранняя оптимизация - это вообще вредно. | |
|
|
|