|
|
|
| Имеет ли смысл обрабатывать переменные функцией mysql_real_escape_string, если данные передаются методом POST? Есть несколько файлов с работой БД- добавление, редактирование, удаление из бд и все данные летят через post | |
|
|
|
|
|
|
|
для: ladan
(05.01.2012 в 22:27)
| | А чем вызваны сомнения? Да, если данные вставляются в базу данных в виде строки, они обязательно должны быть обработаны. Подделать POST-данные лишь чуть-чуть сложнее, чем GET-данные, злоумышленника это не остановит. | |
|
|
|
|
|
|
|
для: cheops
(05.01.2012 в 22:30)
| | ясно спасибо! пойду обрабатывать :) | |
|
|
|
|
|
|
|
для: cheops
(05.01.2012 в 22:30)
| | обрабатывать только те переменные, где идет именно вставка в таблицу? или для обновление, удаление из бд тоже нужно их обработать? | |
|
|
|
|
|
|
|
для: ladan
(05.01.2012 в 23:35)
| | Обрабатывать нужно все, так, чтобы вставка данных в запрос не приводила к ошибке на стороне MySQL-сервера. Все запросы должны быть корректны, чтобы не вводил пользователь. | |
|
|
|
|
|
|
|
для: cheops
(05.01.2012 в 23:40)
| | ясно, спасибо еще раз | |
|
|
|
|
|
|
|
для: cheops
(05.01.2012 в 23:40)
| | а вот такой пример: делаю вставку в таблицу, все переменные обработал, кроме $date = date(); т.к она не передается из вне. Может ли взломщик предугадать эту переменную и подменить ее как-то? | |
|
|
|
|
|
|
|
для: ladan
(06.01.2012 в 00:27)
| | Нет, получить доступ к ней он не может... раньше, когда на большинстве серверов работала директива register_globals, существовала теоретическая возможность подмены переменной, если вы её не инициализировали и она так и не получала инициализации (но где-то использовалась). | |
|
|
|
|
|
|
|
для: cheops
(06.01.2012 в 00:49)
| | еще раз спасибо :) | |
|
|
|
|
|
|
|
для: ladan
(06.01.2012 в 00:56)
| | заметил, что если в форме(поле текст арея) слова разделить клавишей "Enter", и нажать "отправить" слова в форме сбиваются в кучу и там где они были разделены Enter'ом, появляется символы \r\n. Можно ли как запретить этот вывод? Точнее чтоб в текстовой области, слова не сбивались в кучу, а были показаны так, как я их разделил Enter'ом. Или это такая особенность этой функцией, что исправить не вариант?
<?
<textarea name="primechanie_one"><? if(isset($primechanie_one)) {echo $primechanie_one;} ?></textarea>
?>
|
| |
|
|
|
|
|
|
|
для: ladan
(08.01.2012 в 00:44)
| | возможно Вам подойдёт функция nl2br() | |
|
|
|
|
|
|
|
для: Slo_Nik
(08.01.2012 в 01:12)
| | Интересная функция, с работой бд не подходит. Если человеку нужно что-то отредактировать, то в этой текстовой ареи эти переносы продублируется при каждой записи в бд, что не очень хорошо :) | |
|
|
|
|
|
|
|
для: ladan
(08.01.2012 в 01:37)
| | какие символы использую в sql инъекциях? Тогда мне проще будет preg_replace'ом обработать эти символы и не пользоваться mysql_real_escape_string и проблема будет решена :) | |
|
|
|
|
|
|
|
для: ladan
(08.01.2012 в 01:41)
| | эта функция специально предназначена для обработки данных в sql запросах, так зачем лепить preg_replace()?
Один из таких символов это одинарная кавычка '.
Если пользователь захочет записать в базу слово с данной кавычкой, то что получится?
Вы её удалите при помощи preg_replace() и что получится в итоге?
А так она будет экранирована на время запроса, попытка взлома потерпит неудачу, но в базу слово запишется без лишних слешей и сохранится пользовательский ввод. | |
|
|
|
|
|
|
|
для: Slo_Nik
(08.01.2012 в 02:04)
| | ясно спасибо за инфу :) | |
|
|
|
|
|
|
|
для: ladan
(08.01.2012 в 02:28)
| | а при магических ковычках включенных на хосте, стоит использовать еще mysql_real_escape_string?
Я заметил, что ковычки стали экранироваться тремя обратными слешами и в базу записываться и выводится \", то есть все равно один обратный слеш записывается в бд и выводится пользователю
Если пользоваться чем-то одним, то все нормально. В чем разница магических ковычек и mysql_real_escape_string? | |
|
|
|
|
|
|
|
для: ladan
(08.01.2012 в 10:49)
| | магические кавычки автоматически экранируют символы, не всегда там где надо.
проверяйте, если кавычки включены, то удаляйте слеши, а перед записью в базу обрабатывайте mysql_real_escape_string()
<?php
if(get_magic_quotes_gpc())
{
$_POST['name'] = stripslashes($_POST['name']);
}
?>
|
можно кавычки отключить через .htaccess
php_flag magic_quotes_gpc off | |
|
|
|
|
|
|
|
для: Slo_Nik
(08.01.2012 в 13:09)
| | Спасибо, отключил кавычки.
Все подправил, теперь с безопасностью проблем не будет :) | |
|
|
|
|
|
|
|
для: ladan
(08.01.2012 в 13:48)
| | хотя с другой стороны возможно надо оставить проверку магических кавычек для того, что бы можно было переносить скрипт на другие хостинги. не на каждом Вам могут дать возможность отключать их через .htaccess, хостер может ограничить или вообще не дать возможность изменять настройки через .htaccess. | |
|
|
|
|
|
|
|
для: Slo_Nik
(08.01.2012 в 13:55)
| | Сейчас сайт на хостинге, в панели управления можно включать/отключать их. Если в будущем сайт буду переносить, то уже только на тот хостинг, чтоб была возможность их отключать, по идеи мне они вообще теперь не нужны. Если нужно заэкранировать, то функцией mysql_real_escape_string() :) | |
|
|
|