|
|
|
|
|
для: Mookapek
(05.02.2015 в 19:02)
| | 1. Тем что оригинал не изменяется. Но в вашем случае это не аргумент. Я понял.
2. Суперглобальные массивы лучше вообще не изменять. Я недавно столкнулся с одной CMS, которая просто валилась с фаталом, Когда полез в логи и код выяснять в чем дело, увидел такое объявление функции:
<?php
function funcname($_REQUEST, $params){
..... тело функции ......
}
| Я конечно офигел и не понял вообще зачем так делать в принципе. Но у клиента на пхп 5.2 оно работало. И оказалось, что начиная с пхп 5.4 взять вот так и полностью переопределить суперглобальный массив уже нельзя! И я не исключаю, что их со временем вообще запретят редактировать. | |
|
|
|
|
|
|
|
|
для: Sfinks
(05.02.2015 в 02:18)
| | > В бд надо не скриптов бояться, а sql-инъекций.
sql-инъекций я не боюсь, я с ними борюсь с помощью функции mysql_escape_string | |
|
|
|
|
|
|
|
для: confirm
(05.02.2015 в 05:15)
| | Ну а если без эпитетов вроде "паники", "насилуете" и т.д., а конкретно что криминального в этой строке
$_POST['name'] = htmlspecialchars($_POST['name']) ?
Пока я услышал такие доводы:
"нечего htmlspecialchars делать в начале скрипта"
"Потому что в таком случае, данные и в БД попадут обработанными. А в БД оно не нужно."
"вы уже в панике занимаетесь тем, чем вообще не стоит"
"Хотеть можно все что угодно. А правильно в данной ситуации так, как вам тут все говорят."
Из этого всего я так и не понял, почему я делаю неправильно. | |
|
|
|
|
|
|
|
для: Sfinks
(05.02.2015 в 00:34)
| | Я так и не понял, чем это
$name = htmlspecialchars($_POST['name']);
лучше этого
$_POST['name'] = htmlspecialchars($_POST['name']); | |
|
|
|
|
|
|
|
для: Mookapek
(04.02.2015 в 22:40)
| | Это не повод для паники. | |
|
|
|
|
|
|
|
для: Mookapek
(05.02.2015 в 00:40)
| | >я фильтрую её один раз непосредственно после получения из формы.
Вы не фильтруете, вы насилуете. Ведь у вас даже проверки данных еще нет, а вы уже в панике занимаетесь тем, чем вообще не стоит. | |
|
|
|
|
|
|
|
для: Mookapek
(05.02.2015 в 00:40)
| | Хотеть можно все что угодно. А правильно в данной ситуации так, как вам тут все говорят. В бд надо не скриптов бояться, а sql-инъекций. Ладно, не хотите слышать, не надо. Со временем сами придете к тому, о чем вам говорят....
А если не придете сами, то когда-нить устроитесь программистом, и тогда вам тим-лид или ведущий программист, увидев такое, просто скажет: "Чтоб такого больше не было!" =)
И это я перевел его гнусную брань на цензурный язык :D
P.S. А что вы будете делать с этими данными из БД, если они вам не в браузере понадобятся? Ну в эксель-таблице, например.... Обратно обрабатывать?
Можно не отвечать. Информация к размышлению. | |
|
|
|
|
|
|
|
для: Sfinks
(05.02.2015 в 00:34)
| | > Потому что в таком случае, данные и в БД попадут обработанными
Так я и хочу, чтобы и в БД они попали обработанные, без всяких зловредных скриптов. Ведь я потом эти же данные из БД вывожу в браузер. Так вот, чтобы всякий раз перед выводом переменной не протаскивать ее через htmlspecialchars, я фильтрую её один раз непосредственно после получения из формы. | |
|
|
|
|
|
|
|
для: Mookapek
(04.02.2015 в 22:40)
| | Лучше обрабатывать именно при выводе:
<?php
echo htmlspecialchars($_POST['name']);
|
Либо, если одно и то же значение выводится несколько раз, то чтобы не обрабатывать многократно, присвоить результат обычной переменной:
<?php
$name = htmlspecialchars($_POST['name']);
echo $name;
|
Но никак не:
> в начале скрипта обрабатываю данные через функцию htmlspecialchars
Потому что в таком случае, данные и в БД попадут обработанными. А в БД оно не нужно. Перед вставкой в БД нужно обрабатывать совсем другими функциями.
И даже если в данном конкретном примере у вас нет вставки в БД, все равно не нужно обрабатывать в начале скрипта. Потому что привыкнув обрабатывать так, а не правильно, в конце концов у вас где-то да закрадется ошибка, пусть даже в другом скрипте. | |
|
|
|
|