在URL中编码JSON时是否存在XSS威胁
Is there any XSS threat while having JSON encoded in the URL?
为了有一个URL友好的应用程序,我正在存储它的上下文,在URL中有一个JSON,它提供了类似于:
http://mysite.dev/myapppage/target#?context={%22attr1%22%3A{%22target_id-0%22%3A{%22value%22%3A%223%22%2C%22label%22%3A%22Hello%22}}}
对基本上下文进行编码:
{
"attr1":
{
"target_id-0":
{
"value": "3",
"label": "Hello"
}
}
}
我正在用序列化我的对象
JSON.stringify(context)
我正在用反序列化它
var hashParamsElements = window.location.toString().split('?');
hashParamsElements.shift(); // we just skip the first part of the url
var hashParams = $.deparam(hashParamsElements.join('?'));
var contextString = hashParams.context;
var context = JSON.parse(contextString);
上下文只是用来读取变量的,里面没有经过评估的代码。有人能告诉我它是否XSS安全吗?
如果存在威胁:我该如何避免?
这种威胁来自于使用不同的JSON解码方法,即eval
和new Function
。这些代码直接执行JS代码,因此通过将代码放入url(并链接到url)来允许非持久性XSS攻击。
JSON.parse
不存在此问题,并且可以安全地抵御此类攻击。
另请参阅(json.org).
label
最终会被插入到DOM的某个位置吗?(即$('#something').html(context.attr1.target_id-0.label)
)
然后我可以把<script>...</script>
放在label
中,这就是你的XSS。
我没有看到任何威胁。它是完全安全的。JSON.parse
不允许任何function
运行。
此外,为什么使用?
。如果你想给人一种"真实"url的感觉,可以使用hashbang。
相关文章:
- 用于检查数组中是否存在元素的javascript自定义方法
- 是否存在React Native“;WEB代码安全防护”;
- 验证会话中是否存在对象's数组
- 如何查找值是否存在于二叉树中
- 检查是否存在使用chrome扩展的javascript库
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 测试mongo脚本中是否存在参数
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- 检查数组中是否存在字符串值,并返回找到的数组值js
- 如何通过json对象选项卡中的Id来检查对象是否存在
- 检查是否存在任意控制器/操作
- Javascript滑块不滑动,如何判断是否存在JS冲突
- 根据手机上是否存在文件,在jQuery mobile中动态填充列表视图
- javascript测试是否存在两个标志中的任何一个
- 如何使用javascript检查移动sd卡中是否存在文件
- 当提供函数名称时,检查函数是否存在于同一作用域中
- 需要帮助使用JQuery.inArray()检查值是否存在
- 确定元素是否存在
- 使用javascript检查服务器上是否存在html文件
- 是否存在类似ExtJS 4的框架;正常的“;网站