Python 如果我删除'<';和'&燃气轮机';从用户输入';?
假设我的应用程序接受用户输入:Python 如果我删除'<';和'&燃气轮机';从用户输入';?,python,sanitize,Python,Sanitize,假设我的应用程序接受用户输入: 1,2,3,4 将其提交到我的后端服务器,然后返回 1234 一个潜在的安全问题是,如果我的用户上传: 警报(“!”),2,3,4 我是否可以通过从用户输入中删除来防止所有危险的XSS攻击(如下面的Python中),或者是否有其他字符会伤害我 data=data.replace('>','').replace(' 如果我从用户输入中删除“”,那么XSS对我安全吗 没有很多过滤的用户输入可以被利用到一个漏洞中。例如,考虑一个设计得很差的软件,它允许用户设置元素的颜色
1,2,3,4
将其提交到我的后端服务器,然后返回
1234
一个潜在的安全问题是,如果我的用户上传:
警报(“!”),2,3,4
我是否可以通过从用户输入中删除
来防止所有危险的XSS攻击(如下面的Python中),或者是否有其他字符会伤害我
data=data.replace('>','').replace('
如果我从用户输入中删除“”,那么XSS对我安全吗
没有很多过滤的用户输入可以被利用到一个漏洞中。例如,考虑一个设计得很差的软件,它允许用户设置元素的颜色:
<element style="color: $COLOR" />
产生输出
<element style="color: blue" onload="alert(1)" />
请注意,像漂白剂这样的输入“消毒”库在这里没有帮助,因为从技术上讲,输入不包含任何标记!唯一的通用解决方案是对允许用户输入插入标记的方式和位置保持谨慎
我会使用我的模板语言清理(Django),但因为我在后端制作自己的HTML,所以我不能,因为这样它也会清理我的表
我不确定您在这里关心什么。Django模板中的过滤功能只应用于模板中使用的内容,而不是应用程序中的其他地方。我可能会使用,但我仍然对答案感兴趣。re:最后一部分,因为我本质上是从Django视图->模板传递html,所以我必须使用{{text | safe}}
,否则它会破坏我在backednSo中创建的表。看起来外卖是为XSS准备的,如果你把它放错了位置,任何东西都可以得到。我倾向于避免在控制器中生成任何类型的HTML——将进入表中的数据传递到模板,然后在那里生成表。但是,是的,这是一个错误n XSS保护的优秀总结。
<element style="color: blue" onload="alert(1)" />