|
|
|
| Для безопасности!!!
Какую обязательно обработку надо с текстом сделать переда записью в базу | |
|
|
|
|
|
|
|
для: Valleri
(10.07.2011 в 12:12)
| | Вы хотите при помощи JavaScript осуществить эту обработку? Дело в том, что если вас будут ломать, то использовать будут ПО/Скрипт, который пойдет не только в обход JavaScript, но и в обход HTML-формы, просто обратятся при помощи сокетов напрямую к обработчику. Вы можете осуществлять проверку при помощи JavaScript, но их придется дублировать на сервере, за которым в плане безопасности и должно оставаться последнее слово. | |
|
|
|
|
|
|
|
для: cheops
(10.07.2011 в 13:42)
| | Какую обработку обязательно надо сделать перед записью в базу(после получения от клиента формы)
Является ли обязательными
. длина строк
. Кодировка строк
. Раскладка,
. Очистить от HTML PHP strip_tags
Чем дополнить список обязательной проверки данных формы для безопасности и защиты от атак | |
|
|
|
|
|
|
|
для: Valleri
(10.07.2011 в 14:17)
| | Первые три параметра - на ваше усмотрение, они избыточны, но никто про вас плохо не скажет, если вы их реализуете.
Четвертый параметр обычно реализует перед выводом, а не перед помещением в базу данных, так HTML-код и PHP-тэги не влияют на базу данных. А чем ближе вы храните текст к оригиналу - тем проще вам жить - испортить текст всегда успеете.
В обязательном порядке нужно защититься от SQL-инъекции, даже если злоумышленику у вас него брать из базы. Т.е. числа должны быть числами, а строки перед помещением в запрос должны быть экранированы, причем экранированы корректно (с учетом включенного или выключенного режима магических кавычек PHP). | |
|
|
|
|
|
|
|
для: cheops
(10.07.2011 в 14:57)
| | Хорошо. Тогда при выводе обязательной для защиты от атак( сточки зрения безопасности а не красоты) какая будет операция | |
|
|
|
|
|
|
|
для: Valleri
(10.07.2011 в 15:27)
| | При выводе обычно пропустить текст через PHP-функцию htmlspecialchars(), числа можно выводить без дополнительной обработки (собственно текст, в котором вы уверены, тоже, так как иногда нужно вывести именно HTML-текст, например, текст баннеров, при обработке htmlspecialchars() - они будут выведены из строя и их обрабатывать не нужно). | |
|
|
|
|
|
|
|
для: cheops
(10.07.2011 в 15:32)
| | Понятно. Хорошо.
А если надо хранить в файле, как с переводами строк быть, \n.
htmlspecialchars() у меня почему то сущности, если они в базе, превращает в теги, например, <br /> => <br />
А у вас нормально!
Как перевод строк хранить в текстовом файле? | |
|
|
|
|
|
|
|
для: Valleri
(10.07.2011 в 15:55)
| | >Понятно. Хорошо.
>А если надо хранить в файле, как с переводами строк быть, \n.
По разному поступают, а в чем проблема, хотите в одной текстовой строке хранить строки с переводами? Тогда придется их экранировать, т.е. заменить \n на \\n.
>у меня почему то сущности, если они в базе, превращает в теги, например, <br /> => <br />
Это при выводе? Ну это нормально, в этом и суть, вот если бы у вас <br /> превращался в первод строки - это неправильно. Суть в том, что текст нужно хранить в базе данных без изменений, иначе при редактировании - вы с ним с ума сойдете. htmspecialchars() следует использовать при выводе из базы данных, да это труднее, чем обработать его один раз при помещении в базу данных, но это окупается с лихвой. | |
|
|
|
|
|
|
|
для: cheops
(10.07.2011 в 16:44)
| | Уже башка кипит. Кажется сложнее места не было.
А источник тут - перевод строк из-за файла!!!
Упертое место
Еще экперимент. \n заменить на<br/> в файле.
При выводе htmspecialchars()
Истина в последней инстанции, опыт и знание опыта критерий истины.
Как в тут или....опять ...новый эксперимент и вновь повторяется бой | |
|
|
|
|
|
|
|
для: Valleri
(10.07.2011 в 17:06)
| | С переводами строк в файлах вообще все не просто, так как файлы могут быть открыты в бинарном или текстовом режимах. В текстовом режиме переводы строк автоматически приводятся к требованиям операционных систем, т.е. в UNIX у вас \r\n заменяется на \n, а в Windows \n, заменяется на \r\n. Если вам нужно, чтобы переводы строк появились при выводе в HTML, то да придется заменять их на <br />, в PHP для этого даже функция есть nl2br(), фактически вывод обычно оформляют так
<?php
echo nl2br(htmspecialchars($text));
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(10.07.2011 в 17:17)
| | Да так и сделаю
А если посетитель ввел сущность.
Например <br /> или другую
Если её так сохранить, то при выводе в HTML будет<br/> , должно быть <br />.
У меня уже груды тумана в голове, не знаю правильно ли объясняю свой вопрос?
Как обнаружить эти сущности и что с ними? | |
|
|
|
|
|
|
|
для: Valleri
(10.07.2011 в 17:34)
| | Нет, не будет такого преобразования - амперсанд & тоже переводится htmlspecialchars() в HTML-представление &, поэтому будет также как здесь, если ввели <br />, то это и отобразится. | |
|
|
|
|
|
|
|
для: Valleri
(10.07.2011 в 15:55)
| | htmlspecialchars не трогает переводы строк | |
|
|
|