XSS篇:
XSS,(cross site scripting),跨站脚本注入,指攻击者利用一些技巧向页面注入脚本代码并让其执行,从而达成攻击效果。
XSS原理
攻击者利用页面输入和输出的功能,在输入时使用闭标签再加脚本代码等技巧,当服务器输出这些输入信息到页面时,就会插入并执行脚本代码。解决方法是可以在服务端对客户端的输入进行过滤或转义。注意:这里不一定只用script标签,还可以用img等其他标签,或者用onclick等事件方法达到执行脚本代码。简单例子如下:
//Web 请求如下所示:
GET http://www.somesite.com/page.asppageid=10&lang=en&title=Section%20Title
//在发出请求后,服务器返回的 HTML 内容包括:
<h1>Section Title</h1>
//攻击者可以通过摆脱 <h1> 标记来注入代码:
http://www.somesite.com/page.asp?pageid=10&lang=en&title=Section%20Title</h1><script>alert(‘XSS%20attack’)</script>
//最终这个请求的 HTML 输出将为:
<h1>Section Title</h1><script>alert(‘XSS attack’)</script>
XSS危害与防范
攻击者可以使用 XSS 漏洞搞恶作剧,窃取 Cookie,劫持帐户,执行 ActiveX,执行 Flash 内容,强迫您下载软件,官网挂钓鱼网站,或者是对硬盘和数据采取操作。防范的方法就是服务端对能被攻击的输入进行过滤或转义。
CSRF篇
CSRF,(Cross-site request forgery),跨站请求伪造,指通过伪装来自受信任用户的请求来进行对受信任的网站一些操作。
CSRF原理
攻击者一般通过XSS使用户在已经授权的网站中不知不觉发起某些请求,从而实现自己的目的。XSS是实现CSRF的有效方法,但不是唯一方法。常见的例子有:
//假如一论坛网站的发贴是通过 GET 请求访问,点击发贴之后 JS 把发贴内容拼接成目标 URL 并访问:
http://example.com/bbs/create_post.php?title=标题&content=内容
//那么,我只需要在论坛中发一帖,包含一链接:
http://example.com/bbs/create_post.php?title=我是脑残&content=哈哈
//只要有用户点击了这个链接,那么他们的帐户就会在不知情的情况下发布了这一帖子。
CSRF危害与防范
既然发贴的请求可以伪造,那么删帖、转帐、改密码、发邮件全都可以伪造。CSRF不能绝对的防范,因为他是通过伪造请求来实现的,而请求可以来自各自各样的方式。我们可以通过提高CSRF的攻击门槛进行适当的防范,做法有:重要的请求应该通过post方式进行(杜绝通过点击链接进行攻击)、服务端生成随机token,保存在页面隐藏域中,在发出请求的时候一并发出,服务端在验证其在session中的token,两者一致后才处理请求,处理请求后必须马上销毁token。(这种做法可以提高攻击难度)、防范XSS攻击(这样能有效防范CSRF)。
网友评论