Angularjs: как ограничить вводимые пользователем данные, содержащие ключевые слова sql-запроса (для sql-инъекции)

#javascript #sql #angularjs #sql-injection

#javascript #sql #angularjs #sql-инъекция

Вопрос:

У меня есть требование в проекте AngularJS при входе в систему и другой форме ограничить вводимые пользователем данные, которые содержат определенные ключевые слова, такие как «ВЫБРАТЬ», «ВСТАВИТЬ», «ОБНОВИТЬ», УДАЛИТЬ», «УДАЛИТЬ» и т.д. В полях ввода. Это поможет нам предотвратить атаки с использованием SQL-инъекций.

Пожалуйста, дайте мне знать, есть ли у нас какая-либо библиотека angularjs для выполнения этого. Или как этого можно эффективно достичь с помощью angularjs?

Спасибо.

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

1. Какую библиотеку вы используете для работы с базой данных SQL?

2. Мы используем базу данных MySQL и взаимодействуем с БД с помощью веб-сервисов Restful.

3. Каким бы способом вы это ни делали, вы также должны делать это на стороне сервера. На мой взгляд, вам было бы лучше разрешить их на стороне клиента и обеспечить хорошую работу с использованием параметров на стороне сервера. Если кто-то хочет называть себя Mr. Drop, тогда все в порядке.

4. «Это поможет нам предотвратить атаки с использованием SQL-инъекций». Нет, этого не будет.

5. сделайте вдох и переосмыслите все это. Просто добавьте captcha …

Ответ №1:

  1. Черный список НЕ является решением в области безопасности. Если вы проверите наличие слова «select», злоумышленник введет «sElEct» или «sel/**/ect» (в MySQL). Если вы разделите слова пробелами, злоумышленник будет использовать комментарии («/**/») или табуляции в качестве разделителей. Вы никогда не сможете выиграть с использованием подхода с черным списком (особенно с целыми словами, как вы предложили), всегда используйте подход с белым списком и допускайте только разрешенные символы (например, a-z, A-Z, 0-9).

  2. Любая проверка на стороне клиента обречена на неудачу. Злоумышленник может легко атаковать любую «Защиту» на основе Javascript с помощью любого простого прокси, такого как fiddler или burp. Вы должны реализовать проверку ввода вашего белого списка в коде на стороне сервера наряду с параметризованными запросами или какой-либо другой передовой практикой для предотвращения SQL-инъекции на уровне DAL (оба рекомендуются вместе).