XSS阻止传递给JS代码文件的参数
XSS preventing for parameters passed to JS code file
我有以下流程:一个带有查询参数的URL,它在服务器端运行一些逻辑,然后使用模板引擎生成一个带有的存根HTML页面
- 包含一个javascript文件,用于执行主要逻辑
<script>
标记,包括一个JS对象,该对象具有此JS代码的参数,部分取自之前的查询参数
现在我想对我收到的参数进行消毒,以防止XSS注入。问题是,其中一个参数是令牌,所以我不想对验证过于严格(只是不允许所有可能的XSS字符听起来过于严格(,但我发现的大多数库都处理纯HTML,而不是JS代码(在<script>
标记中(。当我阅读所有的正则表达式解决方案时,我也感到有点不安,因为在处理安全性时,我习惯于信任开源库(它们有单元测试,而不是一堆正则表达式(。
任何关于图书馆的建议&可能的方法?我们在JVM环境中运行。
最简单、最简单、因此更安全的方法是使用数据属性来表示用户提供的动态值。
这样,您只需要担心HTML编码,而不需要担心OWASP推荐的复杂十六进制实体编码('x00
(。
例如,您可以有:
<body data-token="@param.token" />
其中@param.token
将输出查询字符串参数的HTML编码版本。例如page?token=xyz"
将输出
<body data-token="xyz"" />
这将减轻您对XSS漏洞的担忧。
然后,您可以使用类似JQuery的东西来轻松地检索JavaScript:中的数据属性值
var token = $("body").data("token");
简单而安全。
假设您想将参数分配为字符串,例如:
{
...
x: '[PARAMETER]'
}
您需要确保[PARAMETER]不会脱离带引号的字符串。
在这种情况下,需要转义的是'
字符和结束的</script>
标记。注意:考虑"escape the escape"攻击,攻击者发送字符串''
,该字符串被转义为'''
,然后返回到'
(您从开始的位置返回(。
正如OWASP所指出的,通常更安全
使用''xHH格式转义所有小于256的字符
我邀请您阅读关于XSS攻击的OWASP页面,特别是https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet#RULE_.233_-_JavaScript_Escape_Before_IsertingUntrusted_Data_into_JavaScript_Data_Values
- 从桌面读取python文件时高亮显示代码
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- webpack代码拆分了handlerbs文件——结果是文件很大
- 在CodeIgniter视图中将Javascript或jQuery代码作为PHP文件编写可以吗
- 如何在Google chrome安全首选项文件中创建扩展安全哈希代码
- 为什么不't我的ruby代码与javascript文件一起插入
- 通过查询替换/写入文件中的代码
- JavaScript代码,用于在浏览器中显示字节数组中的PDF文件(非base64编码)
- 如何使用d3.js从csv文件中绘制areaplot?请任何人分享代码
- 如何缩小 knockoutjs 代码文件
- 我应该如何包含我的AngularJS项目的代码文件
- 在包含外部js库和js代码文件时使用jquery的noconflict函数
- 我应该根据行数分开我的javascript代码文件吗?
- 如何使用JavaScript在代码文件中找到动态创建的元素
- 打开HTML文件中的代码文件,并转到给定的行号
- XSS阻止传递给JS代码文件的参数
- Javascript asp.net c#multi-objet传递到Js代码文件
- 我们如何从代码文件中调用javascript函数
- 用户不应该既不能下载javascript代码/文件也不能下载css文件