本文章纯粹是个人收藏,其中各种也是略略了解,下面直接贴出知识点。/捂脸/捂脸

计算机程序主要就是输入/输出,安全问题由此产生,凡是有输入的地方都可能带来安全风险。根据输入的数据类型,web应用主要有数值型、字符型、文件型。

要消除风险就要对输入的数据进行检查,对于web应用来说,检查的位置主要是前端和后端。前端检查只能防止正常状况,没法防止使用工具、程序绕开检查直接把数据发送给服务器。

输入检查

防止输入注入型攻击。所有的输入数据都要检查,除了前端检查外,为防止使用工具、程序绕开前端检查直接把数据发送给服务器,后端也要检查所有输入数据。

依据产品文档的要求进行合法性检查,数值型,手机号,时间,邮箱等;

检查文本型是否含控制字符,过滤掉控制字符;

检查文本型的长度;

URL字符串转义,使用 urlencode 函数处理;

文件上传

防止文件注入型攻击。

1、文件上传目录设置成不可执行;

2、判断文件类型。结合MIME type与文件扩展名,设置文件类型白名单。对于图片文件,可以利用图片库函数深层次检查是否真是图片;

3、重命名文件名;

4、文件服务器使用独立的域名;

输出转义

防止XSS(跨站脚本攻击)。向页面输出的文本型数据进行 html encode(转义),即是将一些 html 中的特殊字符转义成普通字符,比如 & 转义成 &,< 转义成 <,"与"都要转义。对应的函数:javascriptencode,php的htmlentities。

同理xml数据包里的字符串值使用xmlencode,json数据包的字符串值使用jsonencode转义。

XSS处理

XSS的本质是HTML注入,用户输入的数据被当成Html代码执行了。

1、cookie 使用 HttpOnly 限制

使得在客户端的js代码不能读取cookie值,但是不能防止从 HTTP header里得到 cookie 值。

2、输出文本 HTML 转义

对网页上显示的文本内容使用 HtmlEncode 转义。js函数:OWASP ESAPI中的encodeCharacter。其它的如xmlencode、jsonencode等转义函数。

3、检查输入的URL

输入的 url 添加上 http: 或者 https:,然后转义输出到网页端

4、对传入js函数的文本型参数值进行 javascript 转义

先进行javascript转义再进行HTML转义

5、SQL注入

预防方法:数据与代码分离,即不用字符串拼凑SQL语句,使用SQL预处理方法(参数使用占位符?);

6、XST处理

XST(跨站追踪)攻击,关闭Web服务器的TRACE方法;

7、CSRF攻击的防御

通常需要防御CSRF(Cross-Site Request Forgeries)攻击的页面是用户登录、修改/删除确认、订单确认等添加新数据、修改数据的页面,此外此类页面必须使用 POST 方式提交。

简要描述:

CSRF(跨站/域请求伪造)攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执行在权限保护之下的操作;

解决方法:

使用验证码(安全性最强,但影响用户体验,不建议使用);

使用同步随机token(安全性强);

在一个请求中分别在 cookie 和 post 请求数据中提交session id 并在服务端做比对(安全性较强);

检查 http 请求中 referer 的值(安全性偏强);不在 URL 中暴露 SessionId 的值,sessionId仅存在cookie中,此外为了增强安全性,在用户登录成功后生成一个新的 SessionId 的值;

8、HTTP头注入

替换HTTP头字符值中的换行符;

9、Cookie安全

Cookie 仅保存 SessionId 的值,设置HttpOnly属性为On;

10、用户密码安全

使用安全的bcrypt替代MD5,bcrypt会产生随机盐 salt

11、权限控制

①.SSO单点登录,openId系统;

②.Spring Security的实现 - 基于角色的访问控制(Role-Based Access Control)RBAC;

③.基于数据的访问控制。比如将用户Id、对象id修改成另一个存在的id,如果没有检查当前登录用户是否是参数对应的id用户,就会产生修改别的用户数据的问题,也即是越权访问;

④.OAuth授权。OAuth第三方开源库;

⑤.SessionId。sessionId加密处理;

Web项目开发中常见安全问题防范的更多相关文章

  1. Web项目开发中常见安全问题及防范

    计算机程序主要就是输入数据 经过处理之后 输出结果,安全问题由此产生,凡是有输入的地方都可能带来安全风险.根据输入的数据类型,Web应用主要有数值型.字符型.文件型. 要消除风险就要对输入的数据进行检 ...

  2. Java Web项目开发中常见路径获取方法

    项目绝对路径 String serverPath = request.getSession().getServletContext().getRealPath("/"); E:\J ...

  3. PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等

    页面导航: 首页 → 网络编程 → PHP编程 → php技巧 → 正文内容 PHP安全 PHP开发中常见的安全问题详解和解决方法(如Sql注入.CSRF.Xss.CC等) 作者: 字体:[增加 减小 ...

  4. web开发中常见的安全漏洞及避免方法

    1.安全攻击 1.SQL.HTML.JS.OS命令注入 2.XSS跨站脚本攻击,利用站内信任的用户,在web页面插入恶意script代码 3.CSRF跨站请求伪造,通过伪装来自信任用户的请求来利用受信 ...

  5. PHP开发中常见的漏洞及防范

    PHP开发中常见的漏洞及防范 对于PHP的漏洞,目前常见的漏洞有五种.分别是Session文件漏洞.SQL注入漏洞.脚本命令执行漏洞.全局变量漏洞和文件漏洞.这里分别对这些漏洞进行简要的介绍和防范. ...

  6. 团队项目开发中,常见的版本控制有svn,git

    团队项目开发中,常见的版本控制有svn,git

  7. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  8. asp.net开发中常见公共捕获异常方式总结(附源码)

    本文实例总结了asp.net开发中常见公共捕获异常方式.分享给大家供大家参考,具体如下: 前言:在实际开发过程中,对于一个应用系统来说,应该有自己的一套成熟的异常处理框架,这样当异常发生时,也能得到统 ...

  9. 使用MyEclipse搭建java Web项目开发

    转自:http://blog.csdn.net/jiuqiyuliang/article/details/36875217 首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成 ...

随机推荐

  1. Java知多少(97)绘图模式概述

    绘图模式是指后绘制的图形与早先绘制的图形有重叠时,如何确定重叠部分的颜色.例如,后绘制的覆盖早先绘制的:或者后绘制与早先绘制的两种颜色按某种规则混合.主要有正常模式和异或模式两种:正常模式是后绘制的图 ...

  2. Matlab如何循环读取文件

    循环读取图片第一种方法①List =dir('*.jpg'); %如需其它图片格式支持,可以自己[重载dir()]函数,实现查找所有图片文件的功能,%如果图片是其它路径,可以用 ["路径&q ...

  3. Java------------JVM(Java虚拟机)优化大全和案例实战

    JVM(Java虚拟机)优化大全和案例实战 堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Ge ...

  4. volatile内存语义

    全面理解Java内存模型(JMM)及volatile关键字 volatile的内存语义 Volatile读写所建立的happens-before关系Volatile读写的内存语义 锁: 获取和释放Vo ...

  5. 【12月21日】A股滚动市盈率PE历史新低排名

    2010年01月01日 到 2018年12月21日 之间,滚动市盈率历史新低排名.上市三年以上的公司,2018年12月21日市盈率在300以下的公司. 1 - 厦门象屿(SH600057) - 历史新 ...

  6. 仿迅雷播放器教程 -- duilib界面(13)

    经过了这么多篇文章的讲解,相信大家也对界面库有一定了解了,用一个新的界面库,肯定要对它进行全方位考察.鉴于公司目前所有的产品都是MFC做的,全部转换成duilib肯定不现实,并且公司的很多项目逻辑和界 ...

  7. [Bayes] Metroplis Algorithm --> Gibbs Sampling

    重要的是Gibbs的思想. 全概率分布,可以唯一地确定一个联合分布 ---- Hammersley-Clifford 多元高斯分布 当然,这个有点复杂,考虑个简单的,二元高斯,那么超参数就是: 二元高 ...

  8. Tomcat -- 启动错误 -- 解决锦集

    java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter :在Tomacat7的context.xml文 ...

  9. lua第三方库

    一.Lua 包管理工具 1.LuaRocks luarocks 是Lua常用的包管理工具(还有一个是LuaDist),其安装方式请参考官网:https://luarocks.org/#quick-st ...

  10. [转]ubuntu bits/predefs.h:没有那个文件或目录

    [转]ubuntu bits/predefs.h:没有那个文件或目录 (2012-04-28 10:09:38) 转载▼ 标签: it 分类: Linux In file included from ...