赞
踩
跨站脚本攻击(Cross Site Script),本来缩写是 CSS, 但是为了和层叠样式表(Cascading Style Sheet, CSS)有所区分,所以安全领域叫做 “XSS”;
XSS攻击,通常是指攻击者通过 “HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,对用户的浏览器进行控制或者获取用户的敏感信息(Cookie, SessionID等)的一种攻击方式。
页面被注入了恶意JavaScript脚本,浏览器无法判断区分这些脚本是被恶意注入的,还是正常的页面内容,所以恶意注入Javascript脚本也拥有了所有的脚本权限。如果页面被注入了恶意 JavaScript脚本,它可以做哪些事情呢?
XSS攻击可以分为三类:反射型,存储型,基于DOM型(DOM based XSS)
恶意脚本作为网络请求的一部分。
- const Koa = require("koa");const app = new Koa();app.use(async ctx => {
- // ctx.body 即服务端响应的数据 ctx.body = ';})app.listen(3000, () => {
- console.log('启动成功');});
访问 http://127.0.0.1:3000/
可以看到 alert执行
举一个常见的场景,我们通过页面的url的一个参数来控制页面的展示内容,比如我们把上面的一部分代码改成下面这样
- app.use(async ctx => {
- // ctx.body 即服务端响应的数据 ctx.body = ctx.query.userName;})
此时访问 http://127.0.0.1:3000?userName=xiaoming 可以看到页面上展示了xiaoming
,此时我们访问 http://127.0.0.1:3000?userName=
, 可以看到页面弹出 alert。
通过这个操作,我们会发现用户将一段含有恶意代码的请求提交给服务器,服务器在接收到请求时,又将恶意代码反射给浏览器端,这就是反射型XSS攻击。另外一点需要注意的是,Web 服务器不会存储反射型 XSS 攻击的恶意脚本,这是和存储型 XSS 攻击不同的地方。
在实际的开发过程中,我们会碰到这样的场景,在页面A中点击某个操作,这个按钮操作是需要登录权限的,所以需要跳转到登录页面,登录完成之后再跳转会A页面,我们是这么处理的,跳转登录页面的时候,会加一个参数 returnUrl,表示登录完成之后需要跳转到哪个页面,即这个地址是这样的 http://xxx.com/login?returnUrl=http://xxx.com/A</
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。