ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Мировые новости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Кардинальный метод защиты от XSS и атак по подстановке SQL-запросов
  #1  
Старый 17.06.2010, 06:00
Аватар для Suicide
Suicide
Moderator - Level 7
Регистрация: 24.04.2009
Сообщений: 1,730
Провел на форуме:
30140275

Репутация: 3256


По умолчанию Кардинальный метод защиты от XSS и атак по подстановке SQL-запросов

Ден Каминский (Dan Kaminsky), получивший известность обнаружением фундаментальной уязвимости в DNS, представил универсальную технику защиты от "SQL Injection" (подстановка SQL-запросов) и XSS (межсайтовый скриптинг) атак. Суть техники защиты от подстановки SQL-запросов в том, что при работе с пользовательскими данными в запросе к СУБД фигурируют не открытые данные, а строка в base64-представлении, в которой изначально отсутствуют спецсимволы. В отличие от традиционной практики анализа вводимых пользователем данных и экранирования опасных символов перед формированием запроса, метод Каминского по своей сути исключает человеческий фактор и возможность недосмотра при проверке.

Для наглядности рассмотрим пример. Допустим в программе имеется строка

$conn->query("select * from table where fname=$fname;");


в случае отсутствия должных проверок в переменной $fname может оказаться SQL-код, т.е. имеет место классическая "SQL Injection" уязвимость. Следуя методике Каминского, поменяв данную конструкцию на

$conn->query(eval(b('select * from table where fname=^^fname;')));


, где "b" - функция враппер для подстановки операций base64-кодирования для переменных, отмеченных через маркер "^^". В итоге к СУБД будет сформирован запрос:

select * from table where fname=b64d("VehHU.....=")


как видим, какое бы ни было содержимое переменной fname при обращении к СУБД оно будет всегда представлено валидной строкой, которая будет перекодирована из base64-представления уже силами СУБД.

Похожая техника предлагается и для защиты от XSS-атак, все выводимые на страницу блоки данных изначально поступают в base64-представлении и отображаются через задействование специального JavaScript-враппера, декодирующего base64-строку и выводящего блок в заданную позицию без его интерпретации браузером.

Пример с реализацией необходимых для осуществления защиты функций на языках PHP и JavaScript, а также дополнение к MySQL с функциями обработки строк base64 (в PostgreSQL поддержка base64 реализована через штатные функции encode/decode), доступны для свободной загрузки (http://recursion.com/interpolique.html). Презентацию с подробным описанием метода можно посмотреть http://www.scribd.com/doc/33001026/Interpolique.

17.06.2010
http://www.opennet.ru/opennews/art.shtml?num=26997

http://www.darkreading.com/database_security/security/app-security/showArticle.jhtml?articleID=225700088
 
Ответить с цитированием

  #2  
Старый 17.06.2010, 06:20
Аватар для Nightmarе
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме:
5749763

Репутация: 1680


Отправить сообщение для Nightmarе с помощью ICQ
По умолчанию

На первый взгляд кажется глупо. Могу и ошибаться.

$conn->query(eval(b('select * from table where fname=^^fname;')));

опять таки это в КАЖДЫЙ запрос надо вставлять, а не проще тогда юзать real escape string для каждого запроса?

Вот было бы что-то глобальное, как например способ с .htaccess который полностью фильтрует весь сайт целиком, тогда было бы интереснее.
 
Ответить с цитированием

  #3  
Старый 17.06.2010, 10:34
Аватар для DoN
DoN
Познающий
Регистрация: 26.05.2010
Сообщений: 48
Провел на форуме:
110887

Репутация: 19
По умолчанию

оке. теперь горик-второй подождем это в бд
 
Ответить с цитированием

  #4  
Старый 17.06.2010, 11:34
Аватар для vvs777
vvs777
Познавший АНТИЧАТ
Регистрация: 16.11.2004
Сообщений: 1,257
Провел на форуме:
1331503

Репутация: 454


Отправить сообщение для vvs777 с помощью ICQ Отправить сообщение для vvs777 с помощью AIM
По умолчанию

защита от ламо-кодеров ценой увеличения CPU time
 
Ответить с цитированием

  #5  
Старый 17.06.2010, 11:39
Аватар для wildshaman
wildshaman
Постоянный
Регистрация: 16.04.2008
Сообщений: 889
Провел на форуме:
12942062

Репутация: 1550


Отправить сообщение для wildshaman с помощью ICQ
По умолчанию

почему многие считают, что проще написать такую страшную обертку, чем просто заюзать пару простых стандартных функций.Тем более, строки, числа, другие входные данные надо обрабатывать по-разному.
 
Ответить с цитированием

  #6  
Старый 17.06.2010, 11:45
Аватар для Qwazar
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме:
10605912

Репутация: 4693


По умолчанию

Мда, ну и глупость этот чел предложил.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..

Мой блог:http://qwazar.ru/.
 
Ответить с цитированием

  #7  
Старый 17.06.2010, 13:45
Аватар для SQLHACK
SQLHACK
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме:
1607210

Репутация: 1617


Отправить сообщение для SQLHACK с помощью ICQ
По умолчанию

А че за функция b() ТО, искал искал ,так и не нашел , че за врапер, просто там еще eval добавляется, мож там еще испонения кода гденить есть ?*
__________________
Бойтесь своих желаний. Они могут исполниться....

...О-о-о-о, ушами не услышать, глазами не понять!
 
Ответить с цитированием

  #8  
Старый 17.06.2010, 14:37
Аватар для Jokester
Jokester
Members of Antichat - Level 5
Регистрация: 18.02.2008
Сообщений: 1,136
Провел на форуме:
17621293

Репутация: 4915


По умолчанию

Цитата:
Сообщение от Qwazar  
Мда, ну и глупость этот чел предложил.
+1

Ден Каминский (Dan Kaminsky), получивший известность обнаружением фундаментальной уязвимости в DNS оказался не таким уж толковым парнем, судя по этому материалу

Для нормальных кодеров "проблемы SQL инъекций" вообще нет, ибо они знают как работать с данными.

Ну а если кому-то не хватает стандартных функций пыха давно придумали PDO
 
Ответить с цитированием

  #9  
Старый 17.06.2010, 14:08
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Хыыыыыыыыы!!!! Особые обстоятельства детектед!!! Ми просто смотрю в будущее
 
Ответить с цитированием

  #10  
Старый 17.06.2010, 14:11
Аватар для Twoster
Twoster
Reservists Of Antichat - Level 6
Регистрация: 20.08.2008
Сообщений: 328
Провел на форуме:
7144817

Репутация: 1503
По умолчанию

я что то совсем не понял! =(
select * from table where fname=b64d("VehHU.....=")

получается, что я ему отправляю запрос вида
select * from table where fname=b64d("Jw==")
после преобразования получится один фиг
select * from table where fname='
? =\


UPDATE:

все, понял
Цитата:
которая будет перекодирована из base64-представления уже силами СУБД.
т.е. помимо использования функций в пхп, еще нужно переписать сорцы всех субд?

З.Ы. Этот треш на равне с БолдженОС прямо... каникулы чтоли такие
__________________

You may say I'm a dreamer
But I'm not the only one

Последний раз редактировалось Twoster; 17.06.2010 в 14:14..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
Внедрение Sql кода с завязанными глазами k00p3r Чужие Статьи 0 12.06.2005 20:48
Обнаружение Sql инъекций и Css атак k00p3r Чужие Статьи 0 12.06.2005 20:43
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ