zoukankan      html  css  js  c++  java
  • 关于web安全需要在编程时注意的

    公司用绿盟科技的远程安全评估系统扫描了项目,发现一些安全隐患,记录下来,以规避以后编程或者发布时犯同样的错误。

    1. 目标web应用表单存在口令猜测攻击

    风险:登录密码易被暴力破解,暴力破解是一种常见的弱口令猜测攻击方式,通过由字母、数字、字符组成的每一种不同组合进行口令猜测直到发现正确的口令。 如果登录页面对密码猜测攻击没有任何防护措施,攻击者可以采用暴力枚举的方式破解用户口令。

    解决思路:阻止客户端频繁提交验证请求,可以用验证码,多次密码错误锁账号等来实现

    2. 错误页面web应用服务器版本信息泄露

    确认方法:查看请求后的response header中是否有类似这样的信息 => Server: nginx/1.4.6 (Ubuntu)

    风险:Web服务器未能正确处理异常请求导致Web服务器版本信息泄露,攻击者收集到服务器信息后可进行进一步针对性攻击。

    解决思路:不要用web服务器默认的错误页面,而要自定义。另外,为了避免response中返回服务器版本信息,需要做一些额外的设置,nginx的配置如下: 

    location = /
    {
       server_tokens off;
    }

      

    3. 目标服务器启用了OPTIONS方法

    风险:OPTIONS方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。OPTIONS方法可能会暴露一些敏感信息,这些信息将帮助攻击者准备更进一步的攻击。

    解决思路:对于不必要开启的请求方式,一律关闭。Nginx的配置如下(只允许GET POST PUT DELETE)

    limit_except GET POST PUT DELETE{   
      allow  192.168.1.0/32;
      deny   all; 
    }

    4.  点击劫持:X-Frame-Options未配置

    风险:点击劫持(ClickJacking)是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。 HTTP 响应头信息中的X-Frame-Options,可以指示浏览器是否应该加载一个 iframe 中的页面。如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险。网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面嵌入从而防止点击劫持。

    解决思路,在nginx.conf配置如下,关于其它web服务器,请参考这里

    add_header X-Frame-Options SAMEORIGIN; //SAMEORIGIN, 只允许同域名的可以frame展示; DENY, 进制一切iframe展示,uri,允许指定uri的iframe显示

    5. 检测到基于HTTP连接的登录请求

    风险:对于公网网站,尽量使用https连接,这个就不再赘述

    6. 目标网站存在无效链接

    风险:不属于安全级别,而是降低了用户体验

    解决思路:删除无效链接

    7. 目标服务器可能存在系统路径信息泄露

    风险:检测到在服务器的响应内容中可能存在系统目录路径信息,如/home,/var或者c:等信息,这一般是由于目标web应用没有处理好应用错误信息导致的目录路径信息泄露。如果攻击者获取到这些信息,可以了解目标服务器目录结构,给攻击者带来便利,如上传文件到服务器的其他目录。

    解决思路:对于系统目录之类的信息实际上客户端一般是不需要知道的,避免返回客户端不需要的冗余信息是基本要求。

     参考:

    http://www.cnblogs.com/buffer/p/3204763.html

    https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

    http://www.cnblogs.com/jsonzheng/p/3799436.html

    ---栖息之鹰(一个外表懒洋洋的内心有激情的程序员) 此博客为笔者原著,转载时请注明出处,谢谢!
  • 相关阅读:
    Java多线程知识-Callable和Future
    C#程序集Assembly学习随笔(增补版,附图)_AX
    C#程序集Assembly学习随笔(第一版)_AX
    【.Net】 C#访问修饰符
    访问修饰符(C# 编程指南)
    Restful API 架构与设计参考原则
    RESTful API 设计指南
    WebService的两种方式SOAP和REST比较
    公众号
    es6(const、let)
  • 原文地址:https://www.cnblogs.com/roostinghawk/p/8427362.html
Copyright © 2011-2022 走看看