Роль точки с запятой в sql-инъекциях и xss-атаках - PullRequest
0 голосов
/ 14 марта 2011

Мне сказали использовать функцию (python) cgi.escape (), чтобы избежать SQL-инъекций и xss-атак, хотя я уверен, что django автоматически экранирует переменные.Читая о таких атаках, мне кажется, что точка с запятой имеет решающее значение как для внедрения SQL, так и JavaScript.Тем не менее, cgi.escape, похоже, не кодирует точку с запятой, оставляя ее голой.В то время как другие менее зловещие символы преобразуются в html-объекты.

Почему это так?Не будет кодирования;что-то вроде ≻ удобно предотвращать эти две распространенные и основные формы атаки?

Интересно, что я не смог найти html-сущность для точек с запятой.

Ответы [ 2 ]

3 голосов
/ 14 марта 2011

cgi.escape используется для преобразования текста, который может содержать символы &, < и >, которые обычно не видны в документах HTML, в объекты HTML, которые будут отображаться.Он не имеет ничего общего с предотвращением внедрения SQL-кода, хотя может помочь предотвратить атаки XSS, отображая HTML-коды в виде текста, а не вставляя фактические HTML-теги в отображаемую страницу.

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

1 голос
/ 14 марта 2011

Точки с запятой иногда возникают при вводе значений в SQL, но не при вводе значений в HTML.

cgi.escape() предназначен для экранирования объектов, помещаемых в HTML, и, таким образом, экранирует только то, что является проблемой в HTML.

...