безопасные данные с переносом строк из textarea

sunyang

Мастер
Регистрация
25 Апр 2009
Сообщения
440
Реакции
30
я приномаю в $_POST['i_am'] данные из texarea поля.
Нужно их записать в базу с учетом переносов на новую строку, да еще чтобы была защита от sql-инъекций и XSS-атак.
написал вот так:
PHP:
$i_am =nl2br(htmlspecialchars($_POST['i_am'], ENT_QUOTES));
или лучше вот так написать?:
PHP:
 $i_am = str_replace("\\n","<br>",mysql_real_escape_string($_POST['i_am']));
с защитой от инъекций вроде норм справляется mysql_real_escape_string, но она экранирует \n которые мы должны преобразовать в <br> функцией nl2br(), чтобы учесть переходы на новую строку.

Как лучше защититься с учетом переносов?
 
Можно сделать что то подобное
PHP:
$i_am = mysql_real_escape_string (trim (strip_tags ($_POST['i_am'])));

Затем записываешь их базу. Ну а выводишь из базы через функцию nl2br

PHP:
while ($row = mysql_fetch_assoc($result)){
            $newsbr = nl2br ($row['news']);
           
        }
 
Можно сделать что то подобное
PHP:
$i_am = mysql_real_escape_string (trim (strip_tags ($_POST['i_am'])));

Затем записываешь их базу. Ну а выводишь из базы через функцию nl2br

PHP:
while ($row = mysql_fetch_assoc($result)){
            $newsbr = nl2br ($row['news']);
         
        }
чет при таком методе, у меня в базу кавычки записались, как есть: ' и " без экранирования.
Это нормально?
 
чет при таком методе, у меня в базу кавычки записались, как есть: ' и " без экранирования.
Это нормально?
В базу они так и должны записаться только данные (кавычки и другие всевозможные символы), а экранируешь их именно в SQL-запросе, чтобы не прошли xss, а также чтобы просто запрос не сломался при появлении в данных кавычек.
 
В базу они так и должны записаться только данные (кавычки и другие всевозможные символы), а экранируешь их именно в SQL-запросе, чтобы не прошли xss, а также чтобы просто запрос не сломался при появлении в данных кавычек.
Одна кавычка ` в записываемых данных приведет в ошибке записи в БД, если не при записи, так потом при выводе инфы из базы... имхо данные изначально нужно утюжить функцией htmlspecialchars($_POST['i_am'], ENT_QUOTES) и всякую лабуду типа тегов, кавычек и прочего преобразовывать в html сущности... тогда при дальнейшей обработке не будет возникать проблем...
 
Одна кавычка ` в записываемых данных приведет в ошибке записи в БД, если не при записи, так потом при выводе инфы из базы...

Ничего подобного. Все без проблем записывается и выводится.
 
Здесь раз раз не приходится. Дино прав, вылезет при какой-то ситуации. Сам убедился, мучился с этим безопасным вводом в БД.
 
Ребята, в mysql можно хранить хоть exe-файлы. Какие вам там кавычки мешают работе mysql? Вы о чем?!?! :D
 
не столько ответ, сколько вопрос - я правильно понял, что проверку по-хорошему лучше делать трижды?

- на стороне юзера (JS)
- на стороне сервера (php)
- на стороне БД (sql)
Или достаточно только пхп, дабы не перегружать "систему"?
 
Назад
Сверху