Ловля Внедрения SQL и других Злонамеренных Веб-запросов

Мне нравится ответ Онура , но он будет расширяться, чтобы включить опциональный метод toJSON() для сериализации объектов:

def dumper(obj):
    try:
        return obj.toJSON()
    except:
        return obj.__dict__
print json.dumps(some_big_object, default=dumper, indent=2)

22
задан Unnikrishnan R 11 September 2016 в 20:49
поделиться

7 ответов

Ваше почти рассмотрение его неправильный путь, инструмент № 3party, который не знает о Ваших методах/именовании/данных/домене приложения, будет попыткой быть в состоянии отлично защитить Вас.

Что-то как предотвращение Внедрения SQL - что-то, что должно быть в коде, и лучше всего записано людьми, которые записали SQL, потому что они - те, которые будут знать, какой should/shouldnt быть в тех полях (если Ваш проект не имеет очень хорошие документы)

Ваше право, это все было сделано прежде. Вы не должны вполне изобретать велосипед, но действительно необходимо вырезать новый из-за различия в общих диаметрах оси.

Это не вклинивание сигнала и выполненная проблема, действительно необходимо быть знакомы с тем, что точно - Внедрение SQL, прежде чем можно будет предотвратить его. Это - подлая проблема, таким образом, это берет одинаково подлые меры защиты.

Эти 2 ссылки преподавали мне намного больше тогда основы на предмете для начала работы и помогли мне лучшая фраза мои будущие поиски на конкретных вопросах, на которые не ответили.

И в то время как этот не вполне 100%-е средство поиска, оно "покажет Вам, свет" на существующей проблеме в Вашем существующем коде, но как с webstandards, не прекращает кодировать, как только Вы проходите этот тест.

11
ответ дан 29 November 2019 в 05:32
поделиться

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

ключевые слова SQL являются всеми английскими словами и не забывают, что строка

 DROP TABLE users;

совершенно допустима в поле формы, которое, например, содержит ответ на вопрос о программировании.

единственная разумная опция состоит в том, чтобы санировать вход прежде когда-либо передавать его Вашей базе данных, но передать его, тем не менее. Иначе много совершенно нормальных, незлонамеренных пользователей собирается быть запрещенным Ваш сайт.

5
ответ дан 29 November 2019 в 05:32
поделиться

Один метод, который мог бы работать на некоторые случаи, должен будет взять строку sql, которая работала бы, если бы Вы наивно использовали данные формы, и передайте его некоторому коду, который считает количество операторов, которые были бы на самом деле выполнены. Если это больше, чем ожидаемое число, то существует достойный шанс, что инжекция была предпринята, специально для полей, которые вряд ли будут включать управляющие символы, такие как имя пользователя.

Что-то как поле обычного текста было бы немного более твердым, так как этот метод, намного более вероятно, возвратит ложные положительные стороны, но это было бы запуском, по крайней мере.

3
ответ дан 29 November 2019 в 05:32
поделиться

Теперь, когда я думаю об этом, Байесовский фильтр, подобный тем раньше, блокировал спам, мог бы работать прилично также. Если бы Вы собрались ряд обычного текста для каждого поля и ряда внедрений SQL, то Вы могли бы быть в состоянии обучить это отмечать инжекционные нападения.

0
ответ дан 29 November 2019 в 05:32
поделиться

Oracle имеет учебное руководство онлайн о Внедрении SQL . Даже при том, что Вы хотите готовое решение, это могло бы дать Вам некоторые подсказки, как использовать его лучше для защиты себя.

3
ответ дан 29 November 2019 в 05:32
поделиться

Один из моих сайтов был недавно взломан посредством Внедрения SQL. Это добавило ссылку вирусу для каждого текстового поля в дб! Фиксация должна была добавить некоторый код, ища ключевые слова SQL. К счастью, я разработал в ColdFiusion, таким образом, код находится в моем файле Application.cfm, который выполняется в начале каждой веб-страницы & это смотрит на все переменные URL. Википедия имеет некоторые хорошие ссылки для помощи также.

0
ответ дан 29 November 2019 в 05:32
поделиться

Одна небольшая вещь иметь в виду: В некоторых странах (т.е. большая часть Европы), у людей нет статических IP-адресов, таким образом помещение в черный список не должно быть навсегда.

3
ответ дан 29 November 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: