分号在sql注入和xss攻击中的作用

时间:2011-03-14 02:39:30

标签: python escaping sql-injection xss

我被告知使用(python的)cgi.escape()函数来避免sql注入和xss攻击,虽然我确信django会自动转义变量。阅读这些攻击,在我看来,分号的作用对于注入sql和javascript都至关重要。然而,cgi.escape似乎没有编码分号,让它裸露。虽然其他不那么不祥的角色被转换成html实体。

这是为什么?不会编码;变成类似≻方便地防止这两种常见和主要的攻击形式?

有趣的是,我一直无法找到用于分号的html实体。

2 个答案:

答案 0 :(得分:3)

cgi.escape用于将可能包含&<>字符的文本转换为HTML实体,这些字符通常在HTML文档中不可见将显示。它与防止SQL注入没有任何关系,尽管它可以通过将HTML代码显示为文本而不是将实际HTML标记插入显示的页面来帮助防止XSS攻击。

您应该使用参数化查询来避免SQL注入;转义输入然后从中构建SQL很难看。

答案 1 :(得分:1)

将值放入SQL时,分号有时会出现问题,但在将值放入HTML时不会出现问题。

cgi.escape()旨在转义正在放入HTML的内容,因此只能解决HTML中存在的问题。