# 安全

# 什么是 XSS?如何预防?⭐

XSS(跨站脚本攻击)能注入恶意的HTML/JavaScript代码到用户浏览的网页上,从而达到Cookie资料窃取、会话劫持、钓鱼欺骗等攻击。

一般情况下,利用保存型 XSS 漏洞的攻击至少需要向服务器提出两个请求,第一个请求时是传送包含危险脚本的请求,这个请求可以将危险脚本存储在服务器中,第二个请求是受害者查看包含危险脚本的页面,此时危险脚本开始执行。

防范

  • 将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie了.
  • 表单数据规定值的类型,例如:年龄应为只能为int、name只能为字母数字组合。。。。
  • 对数据进行Html Encode 处理,例如 将可疑的符号 < 符号变成 &lt; &gt;(HTML实体)就行
  • 过滤或移除特殊的Html标签, 例如:<script>, <iframe> , &lt; for <, &gt; for >, &quot for
  • 过滤JavaScript 事件的标签。例如 "onclick=", "onfocus" 等等。

举例:

一个博客网站,我发布一篇博客,其中嵌入脚本

脚本内容:获取cookie,发送到我的服务器(服务器配合跨域)

发布这篇博客,有人查看他,我就能获取用户的cookie

# 什么是 CSRF?如何预防?⭐

CSRF(Cross-site request forgery)跨站请求伪造

它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。

防范

  • HTTP头中有一个字段叫作Referer,它记录了HTTP请求来源的地址。在服务端检查
  • 增加验证,例如密码、短信验证码、指纹等(请求参数里加一个随机token,在服务端验证)

举例:

1 某购物网站的付费接口xxx.com/pay?id=100,但没有验证,且用户已登录

2 攻击者发送一封邮件,验证正文隐藏这个付费接口

3 查看邮件后就会付费扣款

# Https怎么防止中间人攻击

img

防范:

  • 使用复杂加密哈希函数进行计算以造成数十秒的延迟;如果双方通常情况下都要花费20秒来计算,并且整个通讯花费了60秒计算才到达对方,这就能表明存在第三方中间人。

  • 双向认证

  • CA数字证书,还有一些专用的密钥交换协议