前端安全之常见问题总结

目录

正文

一、XSS(Cross Site Scripting)跨站JS脚本攻击,如何防范?

  1. 针对接口进行 XSS攻击,即把js脚本或者带恶意js脚本的html标签,作为GET或者POST参数提交到服务器,然后服务器解释并响应,在响应结果里把脚本或者html标签原样返回明显示和执行。这明显是很有问题。防范方式:1)提交数据前前端要做数据校验,对用户输入的信息(js代码及dom节点)进行过滤。2)对重要的cookie设置为httponly(服务器端可设置此字段),客户端就没有操作此cookie的权限。3)服务器端也要数据合法性校验
  2. 针对DOM本身进行 XSS攻击,如果本身页面代码中使用了window.eval来执行代码。eval本身会把一段字符串变成可执行的js代码,这是非常危险的。还有拼接html字符串后直接显示DOM时也会遇到同样的问题。防范方式:尽量避免使用eval,拼接html字符串时应校验字符串的合法性,过滤非法元素节点与属性节点,如iframe,script标签,onerror事件, style, src, href等。

 

         可能产生危害:泄露了个人的cookie信息,身份认证被套取后,被用作非法用途

         非法字符过滤可以使用第三方的过滤库如:HTMLParser.js及he.js

 

         参考引用自:https://www.cnblogs.com/unclekeith/p/7750681.html

 

二、CSRF(Cross-site request forgery)跨站请求(GET和POST)伪造攻击,如何防范?

         由于浏览器一般都是可同时打开多标签的。举个例了,现浏览器同时打开了两个标签,一个是已被合法登录并保持登录状态的网站A,另外一个是已被欺骗打开的含恶意代码的网站B(不一定是来源于非法网站,也可能藏在各大合法论坛上的一些非法链接被你打开了),则可以通过在恶意网站B上静态或者动态创建img,script等标签发起GET或者POST请求,发出的恶意请求是身份认证后的,这就构成CSRF攻击了。将其src属性指向发起对A网站的接口请求(如一个GET请求:api.a.com/blog/del?id=1)。通过标签的方式发起的请求不受同源策略的限制。

         可能产生危害:模拟表单提交盗取用户资金,篡改目标网站上的用户数据,盗取用户隐私数据

         防范方式:1)后端接口要对接口请求来源如(* Referer:)字段进行合法校验。2)添加token,带token请求。

 

         参考引用自:https://www.cnblogs.com/unclekeith/p/7788057.html

 

三、SQL注入,攻击如何防范?

       老生常谈的了,总之:

  1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和

  双"-"进行转换等。

  2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。

  3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

  4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息

  5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装

  6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。

 

         参考引用自:https://www.cnblogs.com/sdya/p/4568548.html

 

四、接口访刷问题,前端如何与后端配合?

         在IT行业混得有一点资历的人估计都会遇到过接口被刷的情况了。如:听说搞某某活动,大奖瞬间被刷走。某某营销活动,奖品瞬间被抢光了。某某平台,短信验证码几天被刷到欠费。

认真去查查记录,发现这些行为都是人家用机器写程序自动刷你接口的。现在还有卡商有各种短信接码平台,专业批量接发验证码的。

如何能更好的做接口防刷:

  1.发送请求之前前端这边要做人机识别。(如微信的静默授权返回一次唯一码,小程序的wx.login接口返回的code,可供后端二次验证,还有发送短信验证码前要手动先输入验证码,或者使用拖动方块填充缺块那种人机识明系统)

  2.接口传参要带加密签名。

 

五、前端常用的js加密方式有哪些?

sha1,base64,md5,SHA256,SHA512,RMD160等

常用开源库有:

https://github.com/blueimp/JavaScript-MD5

https://github.com/h2non/jshashes

https://github.com/dankogai/js-base64

 

交流与学习

  1. 本文作者:Nelson Kuang,别名:Fast Mover  欢迎大家留言及多多指教
  2. 版权声明:欢迎转载学习 => 请标注信息来源于 https://www.cnblogs.com/fastmover/p/9929029.html

——

posted @ 2018-11-08 14:48  Fast Mover  阅读(526)  评论(0编辑  收藏  举报
友情链接: A4纸尺寸 | 卡通头像 | +申请友情链接