您的位置:首页 > 其它

浅谈常用的几种web攻击方式以及解决办法

2017-12-08 15:30 375 查看
身在互联网的时候,web在给我们带来便利的同时,有些人也在盯着这些便利,因此出现了攻击网站的现象。所以我们在开发的时候,要注意这些容易被攻击的地方,以及做好防御的措施,下面将介绍一些这些常见的攻击手段以及解决办法。


       1.SQL注入

            攻击方式

           大多数人拥有字母数字式密码,或者有安全意识的人,拥有附带其他键盘符号的字母数字式密码。由于 这种想法,开发人员可能允许输入任何字符作为密码。这通常是没问题的,除非他们忘记清洁或检查输入数据。这种情况比应该的要发生的频繁得多。使用 SQL 数据库的密码系统(在许多网站上非常普遍的场景)可能运行这样的查询:

           SELECT * FROM users WHERE 'username' = '$USER' AND 'password'='$PASS'; 

          $USER 和 $PASS 会用用户提供的用户名和密码来代替。那么如果用户输入‘bob’和‘1234’,那么结果的查询是:

           SELECT * FROM users WHERE 'username' = 'bob' AND 'password' = '1234';

          而来自数据库的返回值会是所有用 bob 作为用户名且用 1234 作为密码的数据元组。如果黑客输入 admin 和 <<’hi’ 或 1=1>>–,那么查询是:

          SELECT * FROM users WHERE 'username' = 'admin' and `password` = 'hi' OR 1=1--'

          注意用户输入的引号如何与原始查询中的第三个引号匹配。数据库现在会返回用户名为 admin 的所有元组,并且会取消对密码的检查,因为 ‘password’ = ‘hi’ OR 1=1 命令数据库寻找密码是 hi 的元组或 1=1 的元组,而由于 1 总是 1,所以每行都是候选。– 是 SQL 注释标志,取消查询中原始的其他引号,并且还将取消任何额外的检查,因此如果有额外的凭证(也就是,keyfob 或 captcha)也会被忽略。现在黑客可以以管理员的身份进入系统并且不用不得不给出合法的密码。通过利用越来越复杂的查询,黑客可以变更、添加,或查询数据。对于数据库,这令黑客具有同应用程序相同的特权。

          解决方案

          a.前端页面需要校验用户的输入数据(限制用户输入的类型、范围、格式、长度),不能只靠后端去校验用户数据。一来可以提高后端处理的效率,二来可以提高后端数据的安全。

          b.后端不要动态sql语句,使用存储过程查询语句。限制用户访问数据库权限。后端接受前端的数据时要过滤一些特殊字符(如:“--”等字符)

          c.后端如果出现异常的话,要使用自定义错误页,防止用户通过服务器默认的错误页面找到服务器漏洞。

           安全查询(参数化查询):

[html] view
plain copy

//获取参数,拆分参数  

 String custname = request.getParameter("customerName");   

 String query = "SELECT account_balance FROM user_data WHERE user_name = ? ";  

   

 //创建连接  

 PreparedStatement pstmt = connection.prepareStatement( query );  

 //将参数格式化  

 pstmt.setString( 1, custname);   

 //获取查询结果  

 ResultSet results = pstmt.executeQuery();  

           安全查询(存储过程)

[html] view
plain copy

//获取参数  

String custname = request.getParameter("customerName");   

try {  

     //调用数据库的存储过程  

     CallableStatement cs = connection.prepareCall("{call sp_getAccountBalance(?)}");  

     //将参数格式化  

     cs.setString(1, custname);  

     //获取查询结果  

     ResultSet results = cs.executeQuery();          

       

     } catch (SQLException se) {              

}  

          不安全查询

[html] view
plain copy

String query = "SELECT account_balance FROM user_data WHERE user_name = " + request.getParameter("customerName");  

 //动态查询,直接拼接字符串  

 try {  

     //创建连接  

     Statement statement = connection.createStatement();  

     //获取查询结果  

     ResultSet results = statement.executeQuery( query );  

 }  


      2.XSS攻击

          引用:XSS攻击及防御


      3.CSRF攻击

      引用:CSRF攻击与防御


      4.Dos攻击

         Dos攻击是一种针对服务器的能够让服务器呈现静止状态的攻击方式。有时候也加服务停止攻击或拒绝服务攻击。其原理就是发送大量的合法请求到服务器,服务器无法分辨这些请求是正常请求还是攻击请求,所以都会照单全收。海量的请求会造成服务器停止工作或拒绝服务的状态。这就是Dos攻击。
           攻击方式:
                             Ping Flood攻击即利用ping命令不停的发送的数据包到服务器。

                             SYN Flood攻击即利用tcp协议原理,伪造受害者的ip地址,一直保持与服务器的连接,导致受害者连接服务器的时候拒绝服务。

           解决方案:
                             设置路由器与交换机的安全配置,即设置防火墙。


      5.Cookies攻击

          通过Java Script非常容易访问到当前网站的cookie。你可以打开任何网站,然后在浏览器地址栏中输入:javascript:alert(doucment.cookie),立刻就可以看到当前站点的cookie(如果有的话)。攻击者可以利用这个特性来取得你的关键信息。例如,和XSS攻击相配合,攻击者在你的浏览器上执行特定的Java
Script脚本,取得你的cookie。假设这个网站仅依赖cookie来验证用户身份,那么攻击者就可以假冒你的身份来做一些事情。
现在多数浏览器都支持在cookie上打上HttpOnly的标记,凡有这个标志的cookie就无法通过Java Script来取得,如果能在关键cookie上打上这个标记,就会大大增强cookie的安全性


     6.重定向攻击

         一种常用的攻击手段是“钓鱼”。钓鱼攻击者,通常会发送给受害者一个合法链接,当链接被点击时,用户被导向一个似是而非的非法网站,从而达到骗取用户信任、窃取用户资料的目的。为防止这种行为,我们必须对所有的重定向操作进行审核,以避免重定向到一个危险的地方.常见解决方案是白名单,将合法的要重定向的url加到白名单中,非白名单上的域名重定向时拒之,第二种解决方案是重定向token,在合法的url上加上token,重定向时进行验证.


     7.文件上传攻击

        a.文件名攻击,上传的文件采用上传之前的文件名,可能造成:客户端和服务端字符码不兼容,导致文件名乱码问题;文件名包含脚本,从而造成攻击.
b.文件后缀攻击.上传的文件的后缀可能是exe可执行程序,js脚本等文件,这些程序可能被执行于受害者的客户端,甚至可能执行于服务器上.因此我们必须过滤文件名后缀,排除那些不被许可的文件名后缀.
c..文件内容攻击.IE6有一个很严重的问题 , 它不信任服务器所发送的content type,而是自动根据文件内容来识别文件的类型,并根据所识别的类型来显示或执行文件.如果上传一个gif文件,在文件末尾放一段js攻击脚本,就有可能被执行.这种攻击,它的文件名和content type看起来都是合法的gif图片,然而其内容却包含脚本,这样的攻击无法用文件名过滤来排除,而是必须扫描其文件内容,才能识别。

        注意:该文章参照以下资料
       常见的web攻击手段
       WEB网站常见受攻击方式及解决办法
       常见的web攻击有哪些
       浅谈常用的几种web攻击方式
       XSS攻击及防御
       CSRF攻击与防御
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: