XSS测试用例:
https://blog.csdn.net/liu_xp_mother/article/details/74990442
HTML事件:
http://www.w3school.com.cn/tags/html_ref_eventattributes.asp
为什么需要会话管理?
http是无状态的,一次请求结束连接断开,服务器再收到请求无法识别此连接是哪个用户,为了需要辨别访问用户需要记录一种用户的方式。
web应用会话管理的方式:
- session
- cookie
- token
Sssion的管理方式:
认证过程:
Cookie的管理方式:
认证过程:
token的管理方式:
token在请求都必须通过url参数或者是http header的形式,主动带上token。(主要用在手机app上)
关于session攻击:
主要攻击方式:首先通过捕获或者固定合法用户的session,然后通过冒充该用户来访问系统。
三种方式来获取一个有效的session标识符:
预测(猜测或者暴力破解【基本使用不到】)
捕获
固定
会话劫持:
取得一个合法的会话表示来伪装成合法用户。
攻击步骤:
目标用户需要先登录站点。
登陆成功后,该用户会得到站点提供的一个会话表示sessionID。
攻击者通过某种攻击手段捕获sessionID
会话固定:
诱骗受害者使用攻击者指定的会话标识(sessionID)的攻击手段。
攻击步骤:
攻击者通过某种手段充值目标用户的SessionID,然后监听用户会话状态
目标用户携带攻击者设定的SessionID登陆站点。
攻击者通过SessionID获得合法会话。
重置cookie的方法:
使用客户端脚本来设置cookie到游览器
HTML的标签加Set-Cookie属性
防御方案: 开启Httponly组织攻击者读取Cookie。 httponly是cookie的一种属性,只是游览器不要在除HTTP和HTTPS请求之外暴露Cookie。XSS
攻击流程:
XSS分类:
反射型XSS(主要用于将恶意脚本附加到URL地址的参数中)
**持久型XSS(**也叫储存型XSS,攻击者事先将恶意JS代码上传到服务器或者数据库中)
DOM型XSS(客户端脚本可以通过DOM动态的检查和修改页面内容,程序执行不依赖于服务器端的数据,从客户端获得DOM中的数据并在本地执行。)
XSS能干什么:
1.Cookie劫持:
利用游览器插件,可以获取请求中的Cookie信息,从获取到的Cookie信息中读取用户的私密信息。
2.模拟GET、POST请求操作用户的游览器,使用JAVASCRIPT模拟游览器发包。
Cookie劫持失败时,或者目标用户的网络不能访问互联网等情况下。
3.XSS钓鱼
利用JavaScript在当前页面伪造一个页面,将用户输入的内容发送到攻击者服务器上。
4.获取用户游览器信息。
JavaScript脚本通过XSS读取浏览器的UserAgent对象来识别浏览器的版本。alert(navigator.userAgent)
通过JavaScript脚本区分浏览器之间的实现差异
5.获得计算机部分权限
比如通过JS打开摄像头等等
XSS Filter
XSS Filter的作用是过滤用户(客户端)提交的有害信息,从而达到防范XSS攻击的效果。
XSS Filter作为防御跨站攻击的主要手段之一,已经广泛运用于各类Web系统之中。
两种过滤:
业内防御跨站脚本攻击的方式一般有两种:input Filtering和output Filtering,即在输入端和输出端进行过滤。 如果一段恶意代码早已存入数据库中,若只有采用输出过滤才能捕获非法数据。
输入过滤方法:
- 输入验证
- 数据消毒(过滤敏感字符
- 为了保证输出内容的完整性和正确性可以使用HTMLEnocde处理,他主要是用对应的HTML实体代替字面量字符,这样做可确保游览器安全处理可能存在的恶意字符,将其当做HTML文档的内容而非结构加以处理。
- htmlspecialchars()函数,可以将特殊字符转成字符实体编码。
动态内容可能出现XSS:
body文本、HTML标签、直接在JS中执行