前端开发中不得不注意的安全问题

虽然现在是后端存储数据,前端做数据前端处理,但是由于HTTP很大程度是靠不住的,故前端安全问题一直比较受重视。今天我们就来聊聊前端开发中需要注意的安全方面知识。

XSS(Cross Site Scriting)跨站脚本攻击

顾名思义,XSS指的是受害者的浏览器中执行攻击者的JS脚本,为达到用户回话、破坏网络或将用户重定向到其他恶意站点。XSS又主要分为存储型以及反射型,我们一一列举:

1)存储型

也称为持久型,是最常见的XSS,是在input,textarea等输入文本信息的区域,输入<script src=‘恶意网站’>,提交后信息会存在在服务器中,用户再次打开网站请求到相应数据。这里用数据库举例最合适,输入的数据会存入数据库,在每次页面重新加载后,都会从数据库中调出进行显示。打开页面,恶意脚本就会将用户的Cookie信息等数据上传到hacker server,造成的影响是持续的。

2)反射型

将修改好的连接发送给用户,用户点击后攻击,只能一次性通过参数提交的方式。为什么不要乱点链接?因为可能是反射型的XSS,偷取你的数据。(来骗,来偷袭)

比如这样弹出cookie<script>alert(document.cookie);</script>是最基础的反射型XSS,严重的是逻辑错误漏洞,可以修改用户的密码等信息,甚至能绕过验证码验证等防御。

如何预防

对于服务端来说,可以采取

1.限制JS读取cookie的做法,比如cookie设置secure以及httponly这两个必要属性。

2.过滤敏感标签,如script、iframe、form等。

对于客户端: 

1.输入检查,防止输入敏感字段如JS,cookie

2.输出检查,因为脚本都混淆在HTML中



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

攻击者诱导受害者进入第三方网站,向被攻击网站发送跨站请求。利用某受害者在被攻击网站已经获取的注册凭证,绕过后台用户验证,冒充用户对被攻击的网站执行某项操作的目的。

通俗的讲就是登录验证能够阻挡非登录用户的侵扰,但是CSRF会通过已登录的用户搞事,比如通过一张图片(这种图片通常是不可见的)发起get请求,又或者通过ajax发起post请求,甚至通过诱导用户点击表单来进行post请求。


CSRF的不同请求类型

如何预防?

目前主要有以下策略:

\bullet 阻止不明外域的访问——同源检测

即验证 HTTP Referer 字段,Referer 值会记录下用户的访问来源,以此来查看是否是自己的站点,但是Referer并不完全靠谱,如果众多二级域名之间需要通信,目标涉及很多。或是历史原因一些 Refferer 为空的请求会漏过校验,但取消Referer字段可能导致部分安全网站无法被访问。所以这种方式只是提高了破解成本,并不能完全杜绝。

\bullet 提交时要求附加本域才能获取的信息——CSRF Token

比较通用的解决方案,在HTTP请求中添加anti-CSRF token。

两者差别在于:XSS利用用户对指定网站的信任,CSRF利用的是网站对于用户网页浏览器的信任,CSRF的目的是守住你的登录信息(cookie),如果被XSS攻击获取cookie,那么仅仅靠CSRF是行不通的,马奇诺防线了属于是。





参考文章:认识前端安全

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、CSRF CSRF(Cross-site request forgery):跨站请求伪造。攻击者盗用了你的身份...
    团子哒哒阅读 761评论 0 1
  • 前端的安全问题,是一个很容易被大家忽略的问题。也是一个很难项目话的问题。 前端安全问题主要分为以下几点: 1.xs...
    鱼仔1234阅读 9,542评论 0 20
  • 1 跨站脚本攻击(XSS攻击) 原理:恶意攻击者往Web页面里注入恶意Script代码,用户浏览这些网页时,就会执...
    RosalindJuan阅读 514评论 1 0
  • 1.XSS攻击 1.1什么是XSS攻击手段 XSS攻击使用Javascript脚本注入进行攻击 例如在提交表...
    panai521阅读 311评论 0 0
  • 前端安全XSS 漏洞CSRF 漏洞 后端安全SQL 注入漏洞权限控制漏洞SESSION 与 COOKIEIP 地址...
    DavieKong阅读 249评论 0 0