在Django中,用户输入不安全的文本有哪些危险?
What are the dangers of unsafe user-inputted text in Django?
我的一位同事最近向开发中的页面介绍了一个漏洞。这允许用户插入30个字符的未转义代码,这些代码将与|safe
过滤器一起执行。所以html不安全字符(<
, >
, '
, "
或&
)可以自由地插入到页面模板中。
该漏洞存在于表单上的错误消息中,因此它不允许黑客编辑显示给其他用户的内容,只能编辑他自己。我想用一个可怕的例子向我的同事展示这种脆弱性的危险。此外,我个人在专业层面上对这种漏洞的最坏情况会是什么很感兴趣。我知道在PHP(可能是旧版本)中,这将允许用户回显服务器文件的内容。这个漏洞是否允许我在设置文件中显示类似的内容?Django开发者(上帝保佑他们)明智地选择了即使使用|safe
过滤器,{
也不会被转义。因此,它不能用于显示上下文变量。
我自己能想到的最糟糕的是插入(和执行)任何JS文件位于网络上的任何地方,这将是可怕的,如果它可能影响到其他用户,但它似乎没有那么糟糕,如果JS文件只会为黑客自己执行
如果可以通过GET参数触发错误消息,那么您可以简单地制作一个链接,当受害者点击它时执行JS。
ie: http://example.com?email=<script>alert(1)</script>
否则,(我能想到的)利用此漏洞的唯一其他方法是在另一个页面上使用表单(假设允许此请求)。
<form name="xssForm" action="http://example.com" method="POST">
<input type="hidden" name="email" value="<script>alert(1)</script>" />
</form>
<script>
document.xssForm.submit();
</script>
第二个选项是CSRF漏洞,它可能存在也可能不存在于您的站点上。
假设这个漏洞只影响攻击者自己,我认为可以说这个实现的风险很小(如果有的话),但是所有的输出都应该作为标准进行转义。没有必要夸大特定漏洞的风险。
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- jQuery匹配JSON对象的部分文本
- onkeyup无法动态创建多个文本区域
- 如何在下面的ES6循环中获得前面的文本
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 借助asp.net验证或java脚本对多个文本进行验证
- 无法在ajaxStart中更改跨度文本
- 高亮显示时编辑文本大小和颜色
- jquery中的文本框验证
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- Sails.js:同时发布文本输入和一个文件
- 当鼠标悬停在文本中的单词上时显示警报
- i危险滑块在图像上显示文本
- 在Django中,用户输入不安全的文本有哪些危险?
- Bootstrap和jquery数据表,改变按钮成功的危险和文本
- 在HTML文本区域中什么是危险的