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

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

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

输入检查

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

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

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

检查文本型的长度

Querystring中参数值字符串转义,使用urlencode函数处理

文件上传

防止文件注入型攻击。

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

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

3、重命名文件名。

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

输出转义

防止XSS(跨站脚本攻击)。向页面输出的文本型数据进行html encode(转义),即是将一些html中的特殊字符转义成普通字符,比如 & 转义成 &amp; ,< 转义成 &lt;,‘与"都要转义。对应的函数: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转义。

总结如下

SQL注入

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

XST处理

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

CSRF攻击的防御

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

HTTP头注入

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

Cookie安全

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

用户密码安全

1、使用安全的bcrypt替代MD5(MD5本来用于生成指纹,用来做加密算法是误用),bcrypt会产生随机盐 salt

权限控制

1、SSO单点登录。OpenID系统

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

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

4、OAuth授权。OAuth第三方开源库

5、Sessionid。sessionid加密处理

原文地址:https://www.cnblogs.com/aiandbigdata/p/10057659.html

时间: 2024-08-28 12:55:36

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

用MyEclipse做web项目开发中如何去除jsp页面中的设计视图

开始用MyEclipse做WEB项目开发时,当用到jsp页面时,新建一个后总是上面是jsp的设计视图,下面才是jsp页面,这样太不方便了,下面是去除这个视图页面的步骤:      MyEclipse->Preference->General->Editors->File Associations->在右边选中*.jsp,然后到右下角选择MyEclipse JSP Editor(default)就行了. 在jsp页面还有几行默认的代码,你的网站做出来后是要上传到服务器的,之后你

java项目开发中常见异常

我相信,在我们做项目的时候,console框中常常出现各种的异常,时间久了,就会发现常见的也就几个,下面我就总结一下常见的异常,供大家参考. 1 java.lang.UnsupportedClassVersionError 从字面上我们就可以看出来是类版本不支持错误,换句话就是jdk版本不兼容,原因是因为我们在高版本上编译class,在低版本的jvm中运行,这是我搜到的答案.理解起来还好.但是我发现我的myeclipse是高版本的jdk,引进的项目是低版本的,这样应该可以支持的,可是同样出现了这

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

1.安全攻击 1.SQL.HTML.JS.OS命令注入 2.XSS跨站脚本攻击,利用站内信任的用户,在web页面插入恶意script代码 3.CSRF跨站请求伪造,通过伪装来自信任用户的请求来利用受信任的网站. 4.目录遍历漏洞 5.参数篡改 6.会话劫持 2.防止攻击的措施总结 1) 对用户输入的数据进行全面安全检查或过滤,尤其注意检查是否包含SQL 或XSS特殊字符. 验证用户输入的数据,包括值.类型.范围等等,用验证控件进行验证 RequiredFieldValidator RangeVa

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

PHP开发中常见的漏洞及防范 对于PHP的漏洞,目前常见的漏洞有五种.分别是Session文件漏洞.SQL注入漏洞.脚本命令执行漏洞.全局变量漏洞和文件漏洞.这里分别对这些漏洞进行简要的介绍和防范. 1.session文件漏洞 Session攻击是黑客最常用到的攻击手段之一.当一个用户访问某一个网站时,为了免客户每进人一个页面都要输人账号和密码,PHP设置了Session和Cookie用于方便用户的使用和访向. 防范: 从前面的分析可以知道,Session攻击最常见的就是会话劫持,也就是黑客通过

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

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX

web项目开发 之 前端规范 --- JavaScript编码规范

JavaScript编码规范 此文严格按照W3C规范和部分实际项目可读性,浏览器加载,性能等众多属性权衡,做出平时前端编码规范文档.供广大web工作者参考并实施,对维护和项目扩展升级都能省时省力. 场景:web前端开发中 一些Javascript的注意事项 和 规格建议: [参考百度资料 和个人一些总结] 1 前言 JavaScript 在百度一直有着广泛的应用,特别是在浏览器端的行为管理.本文档的目标是使 JavaScript 代码风格保持一致,容易被理解和被维护. 虽然本文档是针对 Java

使用MyEclipse搭建java Web项目开发

转自:http://blog.csdn.net/jiuqiyuliang/article/details/36875217 首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官网上下载安装即可,之后需要细心的配置环境变量,我给大家推荐百度文库的一篇文章,猛戳这里. 第二步,下载Tomcat,当然可以去Apache Tomcat的官网,同样,您可以移驾到

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

本文实例总结了asp.net开发中常见公共捕获异常方式.分享给大家供大家参考,具体如下: 前言:在实际开发过程中,对于一个应用系统来说,应该有自己的一套成熟的异常处理框架,这样当异常发生时,也能得到统一的处理风格,将异常信息优雅 地反馈给开发人员和用户.我们都知道,.net的异常处理是按照“异常链”的方式从底层向高层逐层抛出,如果不能尽可能地早判断异常发生的边界并捕获异 常,CLR会自动帮我们处理,但是这样系统的开销是非常大的,所以异常处理的一个重要原则是“早发现早抛出早处理”.但是本文总结的服

Web安全测试中常见逻辑漏洞解析(实战篇)

Web安全测试中常见逻辑漏洞解析(实战篇) 简要: 越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽,对信息进行增删改查的时候没有进行一个判断,判断所需要操作的信息是否属于对应的用户,导致用户A可以操作其他人的信息.? 逻辑漏洞挖掘一直是安全测试中"经久不衰"的话题.相比SQL注入.XSS漏洞等传统安全漏洞,现在的攻击者更倾向于利用业务逻辑层的应用安全问题,这类问题往往危害巨大,可能造成了企业的资产损失和