annidy / notes

0 stars 0 forks source link

跨站攻击 #294

Open annidy opened 1 month ago

annidy commented 1 month ago

1. CORF

跨站请求伪造

是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发起POST、GET请求)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求是发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

防御方式:

  1. CSRF令牌
  2. 检查Referer
  3. 不使用Cookie,使用Session

2. XSS

跨站脚本攻击(Cross-site scripting,XSS)是一种安全漏洞。 攻击者可以利用这种漏洞在网站上注入恶意的客户端代码。 当受害者运行这些恶意代码时,攻击者就可以突破网站的访问限制并冒充受害者。

防御方式:

  1. 所有用户输入的内容都要过滤代码,或显示前进行转义

CORS

浏览器同源策略在一定程度上可以防御上面2种攻击。即在网页a.com上,发起b.com的jsonp请求前,浏览器会先发起一个CORS 预检请求,并带上Origin源站,b服务器需要判断此源站是否是受信网站

--- a.com html ---
Host: b.com

OPTIONS /resource/foo
Access-Control-Request-Method: DELETE
Access-Control-Request-Headers: origin, x-requested-with
Origin: https://a.com

--- b.com/resource/foo ---

HTTP/1.1 200 OK
Content-Length: 0
Connection: keep-alive
Access-Control-Allow-Origin: https://a.com
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Max-Age: 86400

浏览器对简单请求GET不预检