Это может показаться очевидным (или не столь очевидным) вопросом, но позвольте мне объяснить. Я кодирую сайт Google App Engine с использованием технологии баз данных Google, BigTable. Любой программник App Engine будет знать, что Google имеет свой собственный язык запросов, называемый GQL. В результате у меня возникает соблазн не делать никаких проверок для инъекций SQL (или GQL) в моем приложении, так как я полагаю, что Google не использует необработанный строковый запрос для своих бэкэнд-методов для извлечения данных.Либо использование баз данных, отличных от SQL, устраняет необходимость в защите от «SQL-инъекции»?
Кроме того, библиотеки для технологий БД, таких как CouchDB, MongoDB и другие объекты или документы (aka NoSQL), похоже, устраняют необходимость проверки того, вводит ли вредоносный пользователь команды манипуляции с базой данных. У них часто есть библиотеки, которые непосредственно отображают объекты в базе данных для объекта на выбранном вами языке. Я знаю, что есть много SQL-библиотек, которые тоже это делают, но я предполагаю, что на каком-то уровне они объединяют параметры для запуска запроса по строке, и поэтому я все равно должен использовать защиту SQL Injection даже с этими фреймворками.
Я являюсь близоруким? Или это только вопрос времени, когда будет достигнута следующая большая система БД, и тогда я увижу инъекцию в эти системы?
Исправьте меня, если я ошибаюсь, но GQL разрешает только запросы SELECT, поэтому, если вы начинаете с «SELECT ... FROM kind», вы ничего не можете добавить к этому для изменения данных, и ничего, что вы могли бы сделать, кроме как выбрать «строки» того же типа сущности, которые, возможно, вы не должны были видеть. Если пользователю разрешено видеть все «строки» определенного типа, тогда нет никакой инъекционной атаки. – Eloff
Несомненно, но SELECT может быть достаточно опасным в неправильных руках. Классическим примером является 'WHERE username = '...' AND password = '...'' расширяется до 'WHERE username = 'admin' OR username = ' x 'AND password =' x'', чтобы войти в учетную запись администратора без пароля, но в зависимости от по логике приложения существует много потенциальных уязвимостей. – bobince