csrf 攻击 和 XSS 攻击

———————— XSS 攻击 ————————

//什么是跨站脚本攻击?

允许恶意web用户将代码植入到提供给其它用户使用的页面中。

 

// 例子:

恶意用户在帖子的评论里输入了:

while(true){
    alert('你关不掉我');
}

其他用户在访问这个帖子评论的时候,就会一直关不掉这个窗口。同理,可能执行 JS 脚本向其他地址发送一些信息,如 cookie 等。

 

// 过滤:

使用 htmlentities 等把字符转成成 html 实体。

 

 

 

———————— CSRF 攻击 ————————

// 什么是跨站请求伪造 (CSRF)

XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

 

// 关键问题:

web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

 

// 例子:

假如一家银行用以运行转账操作的URL地址如下: http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName

那么,一个恶意攻击者可以在另一个网站上放置如下代码: <img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman">

—— 如果有账户名为Alice的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金。

 

// 解决方法:

1、检查 referer 字段

HTTP头中有一个Referer字段,用以检查来源地址。但是保不准有些攻击者攻击浏览器,修改 refer 字段的可能。

2、检查 token —— 常用

—— 要求在访问敏感数据请求时,要求用户浏览器提供不保存在cookie中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再运行CSRF攻击。

—— 服务器将其生成并附加在窗体中,其内容是一个伪随机数。当客户端通过窗体提交请求时,这个伪随机数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪随机数,而通过CSRF传来的欺骗性攻击中,攻击者无从事先得知这个伪随机数的值,服务端就会因为校验token的值为空或者错误,拒绝这个可疑请求。

 

 

 

 

 

 

 

———— 占位符

posted @ 2018-12-21 16:54  小寒1206  阅读(168)  评论(0编辑  收藏  举报