| |
|
|
| | Собственно САБЖ по этой функции (если применять ко всем переменным, кроме числовых, для них есть просто intval(); )
function bez($str)
{
$str = htmlspecialchars($str, ENT_QUOTES);
$str = trim($str);
$str = stripcslashes($str);
$str = stripslashes($str);
$str = str_replace("'", """, $str);
$str = str_replace('"', """, $str);
$str = str_replace("\n", "", $str);
$str = str_replace("/", "", $str);
$str = str_replace("//", "", $str);
if (!get_magic_quotes_gpc())
{
$str = mysql_escape_string($str);
}
return $str;
}
|
| |
| |
|
|
| |
|
|
| |
для: DEM
(15.05.2007 в 18:24)
| | | нет
[поправлено модератором] | |
| |
|
|
| |
|
|
| |
для: Trianon
(15.05.2007 в 18:30)
| | | А на что её лучше замнеить? | |
| |
|
|
| |
|
|
| |
для: DEM
(15.05.2007 в 18:37)
| | | Вы пытаетесь бороться с тенью. Вы полагаете, что безопасным может быть содержимое строки.
Не может. Безопасным может быть лишь правильное применение строки. Которое в каждом случае достигается индивидуально. | |
| |
|
|
| |
|
|
| |
для: Trianon
(15.05.2007 в 18:41)
| | | Ну вот у меня например есть ГЕТ-переменная, я её так защищал и когда попытался использовать SQL-иньекцию, она не прошла и всё было норм...
Так же проверял и ПОСТ-переменные, тоже всё норм... Я конечно пнимаю, что для некоторых случаев она не подойдёт, но в общем, нормально ли? | |
| |
|
|
| |
|
|
| |
для: DEM
(15.05.2007 в 18:44)
| | | самому проверять свою прогу(скрипт) это както не логично
лучше дай ее хорошему знакомому программеру пусть он тогда юзает
будь уверен, что утебя такие ошибки выплавят наружу, что ты даже оних и не предпологал ))) | |
| |
|
|
| |
|
|
| |
для: Mirage
(15.05.2007 в 18:48)
| | | Для многих это довольно дорогой способ.
Потому что, глядючи на отнюдь не некоторые исходники, блевать тянет так, что это не скомпенсирует никакой гонорар. | |
| |
|
|
| |
|
|
| |
для: DEM
(15.05.2007 в 18:44)
| | | >Ну вот у меня например есть ГЕТ-переменная, я её так защищал и когда попытался использовать SQL-иньекцию, она не прошла и всё было норм...
А потом оказалось, что безобидную строку без искажения ввести невозможно. | |
| |
|
|
| |
|
|
| |
для: DEM
(15.05.2007 в 18:44)
| | | GET-переменная содержит строку или число? | |
| |
|
|
| |
|
|
| |
для: Trianon
(15.05.2007 в 18:41)
| | | [quote]Вы пытаетесь бороться с тенью. Вы полагаете, что безопасным может быть содержимое строки. [/quote]
То есть нужно на каждый случай прописывать замену? | |
| |
|
|
| |
|
|
| |
для: ZAHTET
(15.05.2007 в 18:47)
| | | когда надо получить число пользуйся intval()
когда надо сохранить имя и выводить его на странице то лучше применить htmlspecialchars()
когда надо записать в базу то addslashes() в зависимости от настройки ини
каждая из этих функций полезна только в одной области применения... или несколько функции... все вместе их применять это бесполезно | |
| |
|
|
| |
|
|
| |
для: bronenos
(15.05.2007 в 18:52)
| | | Это точно :)
Если Вы пытаетесь предотвратить атаку от юзера - проверьте строки на наличие символов скриптов >< и их кодовых представлений/ Если боитесь получить в get строке подставу - проверьте на соответствие полученный параметр. Но не использкйте универсальных функций везде.
К примеру: htmlspecialchars при попытке вставить html код в страницу - выведет его как текст, а если вы ее примените дважды перед выводом в текстовое поле, а потом при заносе в БД, то вообще получите искаженную строку при наличии спецсимволов.
Поэтому просто думайте когда пишете. | |
| |
|
|
| |
|
|
| |
для: ZAHTET
(15.05.2007 в 18:47)
| | | Нужно разделять, как минимум
1.случай исправления входного аргумента, ошибочно нарушенного механизмом магических кавычек (stripslashes)
2.случай экранирования слэшей и кавычек при формировании C-подобных литеральных констант например в контексте SQL-запроса. (addslashes или mysql_escape_string)
3. случай вывода plain-текста в html-поток. (htmlspecialchars)
Потому что это независимые случаи.
1 - случай ввода, 3 - это вообще случай вывода. 2 - случай внутренней обработки.
И хотя 1 и 2 пункты в некоторых ситуациях аннигилируют друг друга, никто не гарантировал, что так будет всегда.
Что Вас не попросят провести поиск по последним 20 символам (или чему-то подобному), и кое-чья замечательная схема компенсации мускульных эскейпов магическими кавычками не развалится, как карточный домик. | |
| |
|
|