jQuery用法中可能被XSS攻击的一些危急环节提示_
XSS指的是跨站脚本攻击,比如人们常说的向$传入字符串或者字符串转换可执行函数等一些平安方面值得留意的详情,下面就为大家整理了jQuery用法中可能被XSS攻击的一些__环节提示
$
我们常常用法向 $ 内传入一个字符串的方式来选择或生成 DOM 元素,但假如这个字符串是来自用户输入的话,那么这种方式就是有风险的。
先看一个 DEMO:l,js,output
$("img src='' onerror='alert();'");
当用户输入的字符串是像这样的时,虽然这个 img 元素不会马上被插入到网页的 DOM 中,但这个 DOM 元素已经被创建了,并且暂存在内存里。而对于 img 元素,只要设置了它的 src 属性,扫瞄器就会马上恳求 src 属性所指向的资源。我们也可以利用这个特性做图片的预加载。在上面的示例代码中,创建元素的同时,也设置了它的属性,包括 src 属性和 onerror 大事,所以扫瞄器会马上恳求图片资源,明显恳求不到,随机触发 onerror 的回调函数,也就执行了 JavaScript 代码。
$
我们常常用法向 $ 内传入一个字符串的方式来选择或生成 DOM 元素,但假如这个字符串是来自用户输入的话,那么这种方式就是有风险的。
先看一个 DEMO:l,js,output
$("img src='' onerror='alert();'");
当用户输入的字符串是像这样的时,虽然这个 img 元素不会马上被插入到网页的 DOM 中,但这个 DOM 元素已经被创建了,并且暂存在内存里。而对于 img 元素,只要设置了它的 src 属性,扫瞄器就会马上恳求 src 属性所指向的资源。我们也可以利用这个特性做图片的预加载。在上面的示例代码中,创建元素的同时,也设置了它的属性,包括 src 属性和 onerror 大事,所以扫瞄器会马上恳求图片资源,明显恳求不到,随机触发 onerror 的回调函数,也就执行了 JavaScript 代码。
推举阅读 $ 的官方文档:l()
.insertAfter()
.insertBefore()
.prepend()
.prependTo()
.replaceAll()
.replaceWith()
.unwrap()
.wrap()
.wrapAll()
.wrapInner()
.prepend()
以上这些方法不仅创建 DOM 元素,并且会马上插入到页面的 DOM 树中。假如用法 script 标签插入了内联 JS 会立刻执行。
担心全的输入来源
.insertAfter()
.insertBefore()
.prepend()
.prependTo()
.replaceAll()
.replaceWith()
.unwrap()
.wrap()
.wrapAll()
.wrapInner()
.prepend()
以上这些方法不仅创建 DOM 元素,并且会马上插入到页面的 DOM 树中。假如用法 script 标签插入了内联 JS 会立刻执行。
担心全的输入来源
document.URL *
document.location.pathname *
document.location.href *
document.location.search *
document.location.hash
ferrer *
window.name
jquery字符串截取 kie
document 的大多数属性都可以通过全局的 window 对象访问到。加 * 的属性返回的时编码 (urlencode) 后的字符串,需要解码才可能造成威逼。
担心全的操作
把可以被用户编辑的字符串,用在以下场景中,都是有隐患的。总体来说,任何把字符串作为可执行的代码的操作,都是担心全的。
1.通过字符串创建函数
(1)eval
document.location.pathname *
document.location.href *
document.location.search *
document.location.hash
ferrer *
window.name
jquery字符串截取 kie
document 的大多数属性都可以通过全局的 window 对象访问到。加 * 的属性返回的时编码 (urlencode) 后的字符串,需要解码才可能造成威逼。
担心全的操作
把可以被用户编辑的字符串,用在以下场景中,都是有隐患的。总体来说,任何把字符串作为可执行的代码的操作,都是担心全的。
1.通过字符串创建函数
(1)eval
(2)new Function
(3)setTimeout/setInterval
2.跳转页面
place/location.assign
修改 script 标签的 src 属性
修改大事
总结
假如发生在用 jQuery 时被 DOM-XSS 攻击的状况,大多是由于忽视了两个东西:
1. 在给$传参数时,对参数来源的把控。
2. 用户的输入途径不只有表单,还有地址栏,还可以通过开发者工具挺直修改 DOM ,或者挺直在掌握台执行 JS 代码。
...
(3)setTimeout/setInterval
2.跳转页面
place/location.assign
修改 script 标签的 src 属性
修改大事
总结
假如发生在用 jQuery 时被 DOM-XSS 攻击的状况,大多是由于忽视了两个东西:
1. 在给$传参数时,对参数来源的把控。
2. 用户的输入途径不只有表单,还有地址栏,还可以通过开发者工具挺直修改 DOM ,或者挺直在掌握台执行 JS 代码。
...
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论