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

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

关于web安全需要在编程时注意的的更多相关文章

  1. Web Worker javascript多线程编程(一)

    什么是Web Worker? web worker 是运行在后台的 JavaScript,不占用浏览器自身线程,独立于其他脚本,可以提高应用的总体性能,并且提升用户体验. 一般来说Javascript ...

  2. Web Worker javascript多线程编程(二)

    Web Worker javascript多线程编程(一)中提到有两种Web Worker:专用线程dedicated web worker,以及共享线程shared web worker.不过主要讲 ...

  3. 使用Web Service进行网络编程-----Web Service简介

    Android应用通常都是运行在手机平台上,手机系统的硬件资源是有限的,不管是存储能力还是计算能力都是有限的,在Android系统上开发.运行一些单用户.小型应用是可能的,但对于需要进行大量的数据处理 ...

  4. WEB前端研发工程师编程能力成长之路(1)(转)

    WEB前端研发工程师编程能力成长之路(1)   [背景] 如果你是刚进入WEB前端研发领域,想试试这潭水有多深,看这篇文章吧: 如果你是做了两三年WEB产品前端研发,迷茫找不着提高之路,看这篇文章吧: ...

  5. WEB前端研发工程师编程能力成长之路(2)(转)

    WEB前端研发工程师编程能力成长之路(2)   四.[入微] 最强解决方案.你能够走在需求的前面,将当前需求里有的.没有直接提出来的.现在暂时没有但将来可能有的等等,及前端编程潜规则等各个方方面面都综 ...

  6. 【转】Web Worker javascript多线程编程(一)

    原文:https://www.cnblogs.com/peakleo/p/6218823.html -------------------------------------------------- ...

  7. Android开发之使用Web Service进行网络编程

    使用Web Service进行网络编程 Android应用通常都是执行在手机平台上.手机系统的硬件资源是有限的,无论是存储能力还是计算能力都有限.在Android系统上开发.执行一些单用户.小型应用是 ...

  8. 模块化编程时,#include到底要放在哪里?

    结合我自己的经验,谈一谈模块化编程时#include应该出现的位置.总结起来大体有二条规则: 一.规则1:只包含必要的头文件 看下面这个模块: ===foo.c==== #include <st ...

  9. 单片机中用c编程时头文件reg51.h及reg52.h解析

    单片机中用c编程时头文件reg51.h及reg52.h解析 我们在用c语言编程是往往第一行就是reg51.h或者其他的自定义头文件,我们怎么样来理解呢? 1)“文件包含”处理. 程序的第一行是一个“文 ...

随机推荐

  1. CSS框模型:一切皆为框 — 从行框说起

    一 行框 看图说话 css 行框 各部分详解 上图代表了框模型中的行框.line-height 属性设置行间的距离(行高).该属性会影响行框的布局.在应用到一个块级元素时,它定义了该元素中基线之间的最 ...

  2. 深入理解js的变量提升和函数提升(转)

    一.变量提升 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域.变量提升即将变量声明提升到它所在作用域的最开始的部分.上个简历的例子如: ...

  3. 使用HttpClient进行Post通信

    ---------------siwuxie095                         首先到 Apache官网 下载相关的库文件     Apache官网:http://www.apac ...

  4. UIActionSheet(操作列表)

    #import "AppDelegate.h" @interface AppDelegate ()<UIActionSheetDelegate> @end @imple ...

  5. Linux-shell实现阳历转农历(序)

    好些天没有登陆邮箱,前几天上班打开一看垃圾箱中有一封邮件让我好激动,还是国外友人的英文邮件.^_^大概内容是我早些时候写的一个阳历转农历的shell小程序,他在用的时候发现了bug,但是这个bug我在 ...

  6. PartyLocation的Post请求问题---debug

    这里,遇到了一个debug: @Override public void setPrimaryPartyLocation(PartyLocation partyLocation) { if (!get ...

  7. 使用Notepad++运行Python脚本

    1.安装python,我用的是anaconda 2.打开找到anaconda安装目录,找到python.exe,记录绝对路径.我的是D:\app\anaconda3\python.exe 3.Note ...

  8. Bootstrap 组件之 Nav

    一.简介 Nav 指导航页.这里 是一个线上例子. 使用了 .nav 的标签就是一个 Nav.下面举例. {注意} 记住,下面的几种导航页都依赖 .nav. 二.导航页 添加 .nav-tabs. & ...

  9. C++笔记-类层次结构

    多重继承 一个类采用多个直接基类的情况称为多重继承,采用一个基类就是单继承. 两个基类中可能会出现名字一样的成员函数 在派生类中就必须消解这两个基类的成员函数带来的歧义性,最好的方法:在派生类中重新定 ...

  10. MySQL导出导入命令的用例

    1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导 ...