Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Достаточно эта функция безопасна?

Сообщения:  [1-10]   [11-13] 

 
 автор: Trianon   (15.05.2007 в 22:32)   письмо автору
 
   для: 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 символам (или чему-то подобному), и кое-чья замечательная схема компенсации мускульных эскейпов магическими кавычками не развалится, как карточный домик.

   
 
 автор: cheops   (15.05.2007 в 21:59)   письмо автору
 
   для: DEM   (15.05.2007 в 18:44)
 

GET-переменная содержит строку или число?

   
 
 автор: Trianon   (15.05.2007 в 19:10)   письмо автору
 
   для: DEM   (15.05.2007 в 18:44)
 

>Ну вот у меня например есть ГЕТ-переменная, я её так защищал и когда попытался использовать SQL-иньекцию, она не прошла и всё было норм...

А потом оказалось, что безобидную строку без искажения ввести невозможно.

   
 
 автор: Trianon   (15.05.2007 в 19:08)   письмо автору
 
   для: Mirage   (15.05.2007 в 18:48)
 

Для многих это довольно дорогой способ.
Потому что, глядючи на отнюдь не некоторые исходники, блевать тянет так, что это не скомпенсирует никакой гонорар.

   
 
 автор: XPraptor   (15.05.2007 в 19:01)   письмо автору
 
   для: bronenos   (15.05.2007 в 18:52)
 

Это точно :)
Если Вы пытаетесь предотвратить атаку от юзера - проверьте строки на наличие символов скриптов >< и их кодовых представлений/ Если боитесь получить в get строке подставу - проверьте на соответствие полученный параметр. Но не использкйте универсальных функций везде.
К примеру: htmlspecialchars при попытке вставить html код в страницу - выведет его как текст, а если вы ее примените дважды перед выводом в текстовое поле, а потом при заносе в БД, то вообще получите искаженную строку при наличии спецсимволов.

Поэтому просто думайте когда пишете.

   
 
 автор: bronenos   (15.05.2007 в 18:52)   письмо автору
 
   для: ZAHTET   (15.05.2007 в 18:47)
 

когда надо получить число пользуйся intval()
когда надо сохранить имя и выводить его на странице то лучше применить htmlspecialchars()
когда надо записать в базу то addslashes() в зависимости от настройки ини

каждая из этих функций полезна только в одной области применения... или несколько функции... все вместе их применять это бесполезно

   
 
 автор: Mirage   (15.05.2007 в 18:48)   письмо автору
 
   для: DEM   (15.05.2007 в 18:44)
 

самому проверять свою прогу(скрипт) это както не логично
лучше дай ее хорошему знакомому программеру пусть он тогда юзает
будь уверен, что утебя такие ошибки выплавят наружу, что ты даже оних и не предпологал )))

   
 
 автор: ZAHTET   (15.05.2007 в 18:47)   письмо автору
 
   для: Trianon   (15.05.2007 в 18:41)
 

[quote]Вы пытаетесь бороться с тенью. Вы полагаете, что безопасным может быть содержимое строки. [/quote]
То есть нужно на каждый случай прописывать замену?

   
 
 автор: DEM   (15.05.2007 в 18:44)   письмо автору
 
   для: Trianon   (15.05.2007 в 18:41)
 

Ну вот у меня например есть ГЕТ-переменная, я её так защищал и когда попытался использовать SQL-иньекцию, она не прошла и всё было норм...
Так же проверял и ПОСТ-переменные, тоже всё норм... Я конечно пнимаю, что для некоторых случаев она не подойдёт, но в общем, нормально ли?

   
 
 автор: Trianon   (15.05.2007 в 18:41)   письмо автору
 
   для: DEM   (15.05.2007 в 18:37)
 

Вы пытаетесь бороться с тенью. Вы полагаете, что безопасным может быть содержимое строки.
Не может. Безопасным может быть лишь правильное применение строки. Которое в каждом случае достигается индивидуально.

   

Сообщения:  [1-10]   [11-13] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования