预防xss攻击

常见的xss攻击有两种,一种是反射型,攻击者诱使用户点击一个嵌入恶意脚本的链接,达到攻击目的。另外一种是持久型,攻击者提交含有恶意脚本的请求并被应用保存在了数据库中。

虽然xss攻击相对来说是一种比较老的攻击手段,但是却又在不断的变化出新的攻击方式,因此对它的防范也是较复杂的,但是主要的防御手段有如下两种。


消毒

xss一般利用恶意脚本来攻击,所以输入的内容一般用户是较少使用的,所以我们需要对HTML危险字符进行转义,如"<",">"这类字符。许多语言都有提供对HTML危险字符的过滤:

PHP的htmlentities()或是htmlspecialchars()。
Python的cgi.escape()。
ASP的Server.HTMLEncode()。
ASP.NET的Server.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
Java的xssprotect(Open Source Library)。
Node.js的node-validator。

例如我使用的是php,所以可以利用htmlentities或htmlspecialchars这两个函数

这两个函数的功能都是转换字符为HTML字符编码,特别是url和代码字符串。防止字符标记被浏览器执行。转换英文时二者不会出现问题,当转换中文时htmlentities()就会出现乱码。而且htmlentities转换所有的html标记,而htmlspecialchars只转换&、”、’、<、>这5个标记。


HttpOnly

浏览器禁止页面javascript访问带有HttpOnly属性的Cookie。HttpOnly并不是直接对抗xss攻击,而是防治xss攻击者窃取Cookie。对于存放敏感信息的Cookie,如用户认证信息等,可以通过对该Cookie添加HttpOnly属性,避免被攻击窃取。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值