Pull to refresh

Очень интересный вариант защиты от SQL-инъекций и XSS

Reading time1 min
Views5.8K
Один весьма мной уважаемый гн Ден Каминский (Dan Kaminsky — известен благодаря обнаружению им фундаментальной уязвимости в DNS ) предложил очень интересную универсальную технику защиты от SQL injection и XSS.

Метод очень просто и от того гениален.

Суть техники сводится в подстановке в SQL-запросах всех данных в base64-представлении и таким образом нет смысла использовать какие либо парсеры/анализаторы используемых в SQL-запрос данных (placeholders и т.д.)

Все это можно грубо описать строкой типа:
«SELECT * from mytable where textfield=base64_decode('Q29vbEhhY2tlcnM=')»
где base64_decode — функция декодирования из base64, релализуемая конкретной БД.

В base64 отстуствуют спецсимволы и следовательно никаких угроз нашему запросу от вносимых в него данных не будет. Нет необходимости как-то экранировать или изменять входные данные. Достаточно закодировать их в base64 и передать в запросе.

Техника применима также и на клиентской стороне — если надо убрать данные в кавычки например в обработчике событий либо же в js. Разкодировка из base64 может быть выполнена прямо в js когда необходимо получить оригинальные данные.

С моей точки зрения метод гениален. Недостатков (по моему мнению) два — увеличение памяти под хранимые таким образом переменные составит 30% (особенность base-64 кодирования), а также повышение нагрузки на сервер из-за необходимости кодирования входных параметров (считаю что можно пренебречь), и нагрузки на сервер БД из-за необходимости разкодирвания (а вот этим я думаю пренебречь не получится).
Однако чтобы быть точным — необходимо делать опыты, а может быть среди хабрапользователей есть знающие люди, готовые поделиться своим мнением на этот счет?

Ссылки по теме:
Dan Kaminsky
base64
Dan Kaminsky про свой метод
Tags:
Hubs:
+5
Comments178

Articles