Как стать автором
Обновить

Комментарии 6

"Внедрение SQL — это когда вы пишете SQL-запросы напрямую, а не с помощью ORM"
… а не с помощью параметризованных запросов.

Из этого списка хотя бы половина относятся конкретно к Python? Заголовок не оправдал содержания
Несколько вещей относятся к стандартным библиотекам Python (вроде парсинга XML/YAML).
То что некоторые пункты относятся сразу ко множеству языков — не значит что оно не относится к Python, соответственно название валидно: как уточнение, что у питона вот эти штуки точно так же не пофикшены, как и у остальных языков.

Сам довольно активно применяю в работе язык Lua, к нему множество вещей из статьи тоже подходит, а что-то — нет, например, сторонние библиотеки зачастую далеко не такие умные как питоновые (большинство библиотек для парсинга XML не упадёт из-за lol/не будет грузить XML-включения по причине собственной тупости), но те же SQL/Shell-инъекции — замечательно срабатывают.
Мне XML понравился. Атака весьма старая — современный парсер ей подвержен?

Это задокументированное и ожидаемое поведение XML. Что тут может поменяться? Полезно, конечно, иметь рубильник против таких наворотов.

При использование subprocess и аналогов просто не нужно передавать строку. это не только небезопасно, но и бессмысленно, ведь вы сначала склеиваете аргументы в строку, чтобы затем шелл распарсил их и передал в виде сишного массива в int execv(const char *path, char *const argv[]);. Передавайте аргументы по отдельности:


    subprocess.check_call(["convert", filename,"-resize", "500", outfile ])

Это относится ко всем языкам.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий