web前端涉及到的安全问题

web前端涉及到的安全问题

跨站脚本攻击—XSS攻击

跨站脚本攻击:XSS(Cross Site Scripting 为了区别CSS,所以就叫XSS)

XSS是最常见的Web前端攻击方式,所谓的跨站脚本攻击指得是:恶意攻击者在网站页面里注入恶意Script代码,用户浏览这些网页时,就会执行其中的恶意代码,能对用户的cookie信息进行盗取以及会话劫持等各种攻击。我们知道很多登陆界面都有记住用户名、密码的功能方便用户下次登录,有些网站是直接用明文记录用户名、密码,恶意用户注册账户登录后使用简单工具查看cookie结构名称后,如果网站有XSS漏洞,那么简单的利用jsonp(跨域请求数据的一种技术)就可以获取其它用户的用户名、密码了。

XSS简单例子

如果我们在一个网站的留言板中输入正常的文字,照片等完全没有问题。但是如果输入正常的文字中再嵌套一段恶意的JavaScript脚本(JavaScript脚本在网站中是不显示的),比如这段脚本是获取网站的cookie然后传输到我自己的服务器上,那么我写的这段留言用户每浏览一次都会执行这个脚本,都会把访客的cookie带到我的服务器上来。

XSS原理

就是通过发布文章、发布评论或者某种特定的方式将一段恶意的JavaScript脚本代码隐秘的输入进去,然后别人浏览这篇文章或者评论的时候,都会执行这段代码。JavaScript代码一旦执行,那可就不受控制了,因为它跟网页原有的JavaScript代码有同样的权限。例如可以获取服务端数据,获取用户cookie等信息,于是,攻击就这样发生了。

XSS危害

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

3、盗窃企业重要的具有商业价值的资料

4、非法转账

5、强制发送电子邮件

6、网站挂马

7、控制受害者机器向其它网站发起攻击

XSS防范

XSS攻击其核心都是利用了脚本注入,因此我们解决办法其实很简单。

  • 输入过滤:不信赖用户的输入,对用户输入的数据做一定的过滤。可以用正则表达式对用户输入的一些数据进行对比验证,这样可以初步对XSS漏洞进行防御。
  • 输出编码:服务器端响应输出到浏览器的数据,可以进行编码或转义来防范XSS攻击。
  • HttpOnly Cookie:预防XSS攻击窃取用户cookie最有效的防御手段。Web应用程序设置cookie时,将其属性设为HttpOnly,就可以避免网页的cookie被客户端恶意窃取,保护用户cookie信息。
  • WAF(Web Application Firewall):Web应用防火墙,主要的功能是防范诸如网页木马、XSS以及CSRF等常见的Web漏洞攻击。由第三方公司开发,在企业环境中深受欢迎。

跨站请求伪造—CSRF攻击

跨站请求伪造:CSRF(Cross Site Request Forgery 简称CSRF)

CSRF是一种常见的Web攻击,也是Web安全中最容易被忽略的一种网站攻击。

CSRF简单例子

假如一家银行用以运行转账操作的URL地址如下:

http://www.bank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName

那么,一个恶意攻击者可以在另一个网站上放置如下代码:

<img src="http://www.bank.com/withdraw?account=Jack&amount=1000&for=Badman">

如果有账户名为Jack的用户访问了恶意站点,而他之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金。

这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。此外,攻击者也不需要控制放置恶意网址的网站。例如他可以将这种地址藏在论坛,博客等任何用户生成内容的网站中。这意味着如果服务端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险

透过例子能够看出,攻击者并不能通过CSRF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义运行操作

CSRF原理

CSRF攻击过程:CSRF攻击过程的受害者用户登录网站A,输入个人信息,在本地保存服务器生成的cookie。然后在A网站点击由攻击者构建一条恶意链接跳转到B网站,然后B网站携带着的用户cookie信息去访问B网站.让A网站造成是用户自己访问的假相,从而来进行一些列的操作,常见的就是转账.

CSRF危害

通过基于受信任的输入form和对特定行为无需授权的已认证的用户来执行某些行为的web应用。已经通过被保存在用户浏览器中的cookie进行认证的用户将在完全无知的情况下发送HTTP请求到那个信任他的站点,进而进行用户不愿做的行为。

CSRF防范

解决方案:

  • 验证码:

    应用程序和用户进行交互过程中,特别是账户交易这种核心步骤,强制用户输入验证码,才能完成最终请求。在通常情况下,验证码够很好地遏制CSRF攻击。但增加验证码降低了用户的体验,网站不能给所有的操作都加上验证码。所以只能将验证码作为一种辅助手段,在关键业务点设置验证码。

  • Anti CSRF Token:

    目前比较完善的解决方案是加入Anti CSRF Token,即发送请求时在HTTP 请求中以参数的形式加入一个随机产生的token,并在服务器建立一个拦截器来验证这个token。服务器读取浏览器当前域cookie中这个token值,会进行校验该请求当中的token和cookie当中的token值是否都存在且相等,才认为这是合法的请求。

  • Referer Check:
    HTTP Referer是header的一部分,当浏览器向web服务器发送请求时,一般会带上Referer信息告诉服务器是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。可以通过检查请求的来源来防御CSRF攻击。正常请求的Referer具有一定规律,如在提交表单的Referer必定是在该页面发起的请求。所以通过检查http包头Referer的值
    是不是这个页面,来判断是不是CSRF攻击。但在某些情况下如从https跳转到http,浏览器处于安全考虑,不会发送Referer,服务器就无法进行check了。若与该网站同域的其他网站有XSS漏洞,那么攻击者可以在其他网站注入恶意脚本,受害者进入了此类同域的网址,也会遭受攻击。出于以上原因,无法完全依赖Referer Check作为防御CSRF
    的主要手段。但是可以通过Referer Check来监控CSRF攻击的发生。

SQL注入攻击

SQL注入简单例子

假设某个网站的登录验证的SQL查询代码为:
strSQL = "SELECT * FROM users WHERE (name = "" + userName + "") and (pw = ""+ passWord +"");"

攻击人员恶意填入:

userName = "1" OR "1"="1";

passWord = "1" OR "1"="1";

时,将导致原本的SQL字符串被填为:

strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1');"
也就是实际上运行的SQL命令会变成下面这样的
strSQL = "SELECT * FROM users;"
因此达到无账号密码,亦可登录网站。所以SQL注入攻击被俗称为黑客的填空游戏。

SQL注入原理

SQL注入(SQL Injection),应用程序在向后台数据库传递SQL(Structured Query Language,结构化查询语言)时,攻击者将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

SQL注入危害

得到后台管理员的权限,一但得到管理员的权限,将会导致无法估量的损失。

SQL注入防范

  • 增加黑名单或者白名单验证
    白名单验证一般指,检查用户输入是否是符合预期的类型、长度、数值范围或者其他格式标准。黑名单验证是指,若在用户输入中,包含明显的恶意内容则拒绝该条用户请求。在使用白名单验证时,一般会配合黑名单验证。

  • 安全检测
    在项目完成的时候,始终坚持安全检测。

  • 防止系统敏感信息泄露
    对数据表的访问权限进行严格控制,尽量限制用户不必要的访问权限

  • 数据转义

    将提交的变量中所有的’(单引号),”(双引号),(反斜杠),空白字符等都在前面加上\。

    文件上传漏洞

原理

由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意后台文件,并能够将这些文件传递给解释器,就可以在远程服务器上执行任意后台脚本。

危害

攻击者利用文件上传漏洞可以直接得到webshell,危害等级超级高,文件上传漏洞也是比较常见的漏洞。该漏洞允许用户上传任意文件可能会让攻击者注入危险内容或恶意代码,并在服务器上运行。

webshell就是以aspphp、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

防范

  • 检查服务器是否判断了上传文件类型及后缀。
  • 定义上传文件类型白名单,即只允许白名单里面类型的文件上传。
  • 文件上传目录禁止执行脚本解析,避免攻击者进行二次攻击。

参考文献

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值