Web安全编程

简介: 安全编程能够体现一个程序员是否合格,什么是安全编程,就是在开发阶段避免系统漏洞,根据乌云漏洞平台的统计,2014排行前10的安全问题如下: SQL注入攻击: 最容易由程序员的编程疏忽产生的漏洞是SQL注入和XSS,SQL注入的危害严重的情况是泄漏整个数据库的信息,后果不堪设想,XSS的后果严重的情况使用户信息泄漏。

安全编程能够体现一个程序员是否合格,什么是安全编程,就是在开发阶段避免系统漏洞,根据乌云漏洞平台的统计,2014排行前10的安全问题如下:


SQL注入攻击:

最容易由程序员的编程疏忽产生的漏洞是SQL注入和XSS,SQL注入的危害严重的情况是泄漏整个数据库的信息,后果不堪设想,XSS的后果严重的情况使用户信息泄漏。以MyBatis为例如何防止SQL注入,如下一条查询语句:

SELECT * from answer a where a.username=#{username}

还可以换个方法写:

SELECT * from user u where u.username='${username}'
在MyBatis里对SQL的处理分为两种,一种是DynamicSqlSource,用于动态的拼接SQL,还有一种是RawSqlSource,静态的SQL(已经预编译)。

MyBatis对#{}的处理就是静态预编译,将SQL参数化,假设用户传的username我们没有过滤,直接用,如果输入的是“ vince' or '1' == '1 ”,预计编译的处理会对特定的字符做转义,数据库会去匹配整个字符串,但${}的处理则是拼接成一个新的SQL,拼接后的SQL如下:

SELECT * from user u where u.username='vince' or '1' == '1'

是不是结果就不是我们预期的了,严重的情况会使整个数据库被攻破,防止SQL注入的方法有很多,对用户输入的参数进行严格的校验同样也能避免此类问题,不过数据库在设计之初已经帮我们想好了处理方案,就是SQL的预编译,不仅提高执行效率,而且能够防止SQL注入。

跨站脚本攻击:

跨站脚本攻击也是一个开发人员引起的软件漏洞,开发人员没有对展示的文本进行转义处理,导致用户上传的恶意脚本在浏览器中执行了,这也叫代码注入,开发人员也可以通过严格的参数校验和过滤进行避免,也可以利用工具处理,例如Freemarker模板框架里的freemarker.template.utility.StringUtil.XMLEncNA(String),

用户输入的内容是 <script>alert('hel');</script>  处理后变成了 &lt;script&gt;alert('hel');&lt;/script&gt;  这样浏览器就不会执行这段脚本,但最终在浏览器上还是展示成 <script>alert('hel');</script>  ,试想一下,如果这里不是alert一个字符串,而是引入一个外部的JS文件,这个文件里的操作是获取用户的Cookie,Cookie里可能包含了某个网站的有效会话SessionID,然后将获取到的数据发到某个邮箱里,恶意的人可以用这个会话登录这个网站,后果可想而知了。

尤其是在有文件上传,用户输入框的地方,开发人员一定要有严格的防范意识,不要依赖客户端JS上的验证,任何用户输入的校验都要验证两次,至少服务器要校验一次。

有一个组织www.owasp.org/   在web安全方面做的很好,公益性的,贡献了很多资料值得我们开发人员学习。

2013年排名前10的安全漏洞

安全测试指南

安全编码规范

其他安全注意事项:

还有很多容易引起安全漏洞的不良编码习惯,例如对密码的不重视,在软件中留SQL后门等等,当然不是所有漏洞都是开发人员引起的


目录
相关文章
|
23天前
|
自然语言处理 Java 数据库连接
掌握JSP页面编程:动态生成Web内容
【4月更文挑战第3天】Java Server Pages (JSP) 是一种用于创建动态Web内容的Java技术,它结合HTML并允许在页面中嵌入Java代码。JSP支持代码片段、表达式语言(EL)和JSTL标签库,简化动态内容生成。当服务器接收到请求时,执行JSP中的Java代码并将结果嵌入HTML返回给客户端。示例展示了如何显示当前日期和时间。JSP可与Servlet、JavaBeans、数据库等结合,用于构建功能丰富的交互式Web应用。
掌握JSP页面编程:动态生成Web内容
|
6月前
|
存储 Java 关系型数据库
JSP考试质量分析系统myeclipse开发mysql数据库bs框架java编程web网页结构
JSP 考试质量分析系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
185 1
N..
|
1月前
|
JavaScript 前端开发 PHP
web编程的正则表达式
web编程的正则表达式
N..
10 1
|
3月前
|
Web App开发 前端开发 测试技术
【Web API系列】使用异步剪贴板API(async clipboard)的图像的编程复制和粘贴
【Web API系列】使用异步剪贴板API(async clipboard)的图像的编程复制和粘贴
78 1
|
4月前
|
安全 数据安全/隐私保护 Python
基于Web安全的Python编程(1)
基于Web安全的Python编程(1)
45 2
|
6月前
|
Java 关系型数据库 MySQL
JSP考试报名管理系统myeclipse开发mysql数据库bs框架java编程web网页结构
二、功能介绍 (1)权限管理:对权限信息进行添加、删除、修改和查看 (2)用户管理:对用户信息进行添加、删除、修改和查看 (3)公告管理:对公告信息进行添加、删除、修改和查看 (4)考试科目管理:对考试科目信息进行添加、删除、修改和查看 (5)考试安排管理:对考试安排信息进行添加、删除、修改和查看 (6)报名管理:对报名信息进行添加、删除、修改和查看,审核, (7)用户登录、身份验证 三、注意事项 1、管理员账号:admin密码:admin 数据库配置文件DBO.java 角色:普通用户,管理员 2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql
109 0
|
6月前
|
开发框架 .NET 数据库
asp.net企业费用报销管理信息系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
asp.net 企业费用报销管理信息系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使 用c#语言开发 应用技术:asp.net c#+sqlserver 开发工具:vs2010 +sqlserver
49 0
|
6月前
|
Java 关系型数据库 MySQL
JSP实习实训管理系统myeclipse开发mysql数据库WEB结构java编程
JSP 实习实训管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
46 0
|
6月前
|
SQL 存储 Java
JSP商家餐饮管理系统myeclipse开发sql数据库web结构java编程
JSP 商家餐饮管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 商场餐饮管理系统就是专门为商场和餐饮店主量身打造的一款电子商务系统,商场可以通过它来管理商场的美食广场,商场餐饮管理能能够使居民享受到餐厅美食,既方便了顾客,也节约了时间,提高了效率,也解决了普通商场美食广场出现的问题
23 0
|
6月前
|
Java 关系型数据库 MySQL
java编程网页SSH设备管理系统myeclipse开发mysql计算机程序web结构JSP源码
JSP SSH设备管理系统是一套完善的web设计系统(struts2+spring+hibernate模式开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发
58 1
java编程网页SSH设备管理系统myeclipse开发mysql计算机程序web结构JSP源码