最近朋友去面一个测试岗,有一道题目为:什么是web安全测试?这题目好泛啊!但细细一想,作为IT从业者,尤其是开发或测试,都必须了解这方面的知识;我听到这题目,第一反应就是想到WEB开发中,都有哪些方面与安全相关呢?咋一想,还想不出很多东西,于是决定进行一次总结;查了一些资料结合自己的经验如下:
1,服务器架构方面的安全问题
服务器要做好相关的防火墙配置:如尽量限制对外端口越少越好,优化一些TCP/UDP等参数,规划和管理好用户权限系统(主要为目录和文件的读写执行权限等);
对于分布式部署的系统,如果仅是内部系统之间通讯的服务,只要通过内部IP进行相互访问即可,如果不在同一网段,也应该限制IP;所有不需要对外开放的端口,都应该被禁止;
服务器常见的攻击方式有:DDOS攻击、远程用户获取目录或root权限
DDOS攻击有很多种,主要表现为耗尽服务器网络或系统资源,达到网站服务瘫痪的目的;针对DDOS攻击,可优化配置,安装相关防范软件等预防;
远程用户获取相关的权限,主要是通过扫描系统的漏洞达成的;针对这种需要做好系统的管理和及时更新补丁;
还有一些从路由方面进行攻击的,这些我也只做了稍微了解,路由方面主要注意打好安全补丁,管理好登录密码即可;
2,系统设计的安全问题
一个不好的设计,也有可能引起安全方面的问题:
比如设计API的时候,尽量做好认证方面的设计,针对设计金钱交易等方面的API,尽可能做好认证的同时,限制访问域名或IP;
有些系统涉及到上传下载,针对这种需求,最好限制上传或下载的目录以及文件类型;避免恶意用户上传含有攻击代码的文件,以及下载涉及系统安全方面的文件(如含有服务器数据库连接密码等配置文件)
针对一些对用户可见的URL或其他数据,设计的时候,不应该透漏流程或步骤规则,否则恶意用户可能通过大量比较,摸出系统的一些规则,从而利用这些规则对系统发起攻击;
系统的一些紧要的算法,不应该使用客户端脚本开发,客户端脚本对用户都是可见的,一旦被恶意用户发现,则有可能被利用;
3,程序开发的安全问题
对用户的输入都需要做特殊的过滤处理,包括表单输入和URL输入,以免用户利用输入漏洞进行攻击(最常见的输入脚本攻击有SQL注入、XSS注入攻击)
对于XSS的过滤,会让人防不胜防;如果用常规的过滤HTML代码,可能还不行,有些聪明的攻击者会利用空白字符或添加多余的括号破坏过滤规则;那么可以自己定义一些规则来过滤,这里有一篇较好的参考文章:
http://cnodejs.org/topic/5058962f8ea56b5e7806b2a3
一般的web用户登录认证都跟coockie脱不开关系,要注意防范攻击者利用伪造coockie来获取特殊用户信息,一般的认证系统都通过将sessionid保存在coockie中,每次用户访问,将cookie带回服务器,攻击者可以利用伪造coockie来获取模仿他人登录,从而窃取相关资料或其他目的;针对这种,可以附加一些认证规则,如结合IP或者分配动态加密token进行认证;简单的可以将coockie的有效时间设置的相对小一点,也可以缩小攻击范围;
针对现今流行的电子商务,大多数WEB系统都是调用第三方支付来达成交易,那么交易时候的安全风险也移交给了第三方;但要注意的是,交易完成后,本地系统的逻辑处理也是要求安全级别很高的;关系到用户付款后得到的相关服务或实物问题;所以应该重视系统与第三方支付调用间的安全问题;比如调用微信支付后,微信会在前端返回一个状态,但同时微信会有后台异步通知本次支付是否成功;所以安全的策略就是,应该在后台接受到通知时做相关逻辑处理,这样后台的逻辑处理完全与用户脱离开来的,安全性就高很多了;
其他安全问题还有很多,甚至包括人为的漏洞;比如最近的“光大证券乌龙指”事件等等;安全问题永远是个矛盾体,有攻击就有防御,有盾必有矛,一路较量,此消彼长,彼消此长,永远是个没完的话题;所以需要做好必要的防范,做好观察,做好监控,及时补丁和更新,防范于未然;
相关推荐
10. **Spring框架**:Spring是Java Web开发中的主流框架,提供了依赖注入、AOP(面向切面编程)、数据访问、事务管理等功能。学习Spring Boot、Spring MVC和Spring Data,实现快速开发和微服务架构。 11. **Ajax与...
java web 整合开发 完全自学手册 光盘资料 源代码partI 1.本书2~24章所附代码的运行环境 操作系统:Windows 2003、Windows XP Professional,或者Windows 2000 开发环境:JAVA5、MyEclipse 数据库:MySQL Web...
总的来说,通过阅读《Java Web整合开发完全自学手册》并实践光盘中的源代码,你将能够掌握Java Web开发的全面技能,包括后端处理、前端展示、数据持久化等多个方面。无论是初学者还是有一定经验的开发者,都能从中...
在《Web前端开发完全技术宝典》中,这些参考手册将详细阐述每个技术的语法、用法、最佳实践以及常见问题的解决方案。例如,你可以学习如何使用CSS选择器来精确地定位和样式化元素,如何用JavaScript实现动态效果,...
可帮助你创建引人注目的 Web 页面,其中包括了众多WEB开发相关的对象、方法及相关技术和元素的详细描述,是一本开发WEB应用不可缺少的精品实用手册。 <br>动态 HTML (DHTML) 对象模型参考 <br>DHTML 对象 ...
同时,内容中也提到了一个很实际的问题,即为什么有些学习Java Web开发的人无法找到高薪工作。这其实归咎于多种因素。一些程序员可能只注重编程技术本身,而没有考虑到企业对于人才的实际需求。例如,大型企业在招聘...
《JavaWeb整合开发完全自学手册》介绍如何整合Struts+Hibernate+Spring+Eclipse进行J2EE开发,所有实例都基于MyEclipseIDE开发,引领读者快速进入基于JavaWeb的J2EE应用领域。《JavaWeb整合开发完全自学手册》主要...
首先,Struts2作为MVC(模型-视图-控制器)架构的实现,是Java Web开发中的重要组件。它提供了一种优雅的方式来组织和控制应用的业务逻辑,通过Action和Interceptor(拦截器)机制实现了灵活的请求处理。Struts2允许...
《Java Web开发完全自学手册》是一本旨在帮助初学者及进阶者全面掌握Web开发技能的书籍,尤其关注Struts、Hibernate、Spring以及Eclipse这四大核心技术。源代码的提供是为了辅助读者更好地理解和实践书中所讲解的...
10. **Web安全**:包括CSRF(跨站请求伪造)、XSS(跨站脚本攻击)防护,以及HTTPS、Session管理等,是Java Web开发中不可忽视的安全问题。 11. **版本控制与构建工具**:Git用于代码版本控制,Maven或Gradle用于...
9. 学习资源:对于新接触PB Web开发的开发者,有许多在线社区、教程和文档可供学习,如PowerBuilder Exchange、Sybase PowerBuilder Developer Center等。 10. 迁移和升级:随着技术的演进,可能需要将老版本的PB...
语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的...
《Java Web整合开发完全自学手册》是一本专为Java Web开发者设计的学习指南,涵盖了从基础到高级的各种技术。源代码提供了丰富的示例和项目实践,帮助读者深入理解并掌握Java Web开发的核心概念。 在Java Web开发中...
《Java Web整合开发完全自学手册--源代码》是针对Java Web开发者的一份宝贵资源,它涵盖了Struts2、Spring2.5和Hibernate3这三大框架的整合应用。这份源代码旨在帮助初学者和进阶者深入理解这些技术的集成与实际运用...
在传统的.NET Web开发中,开发者通常依赖于Visual Studio提供的拖放控件,如TextBox、Button等,这些控件可以满足基本的网页需求。然而,Web2.0的概念带来了互联网的革新,强调用户参与、富媒体、社交网络以及实时...
### Web开发中乱码问题的研究与解决 #### 1. 引言 在Web开发过程中,乱码问题一直是困扰开发者的一大难题,尤其是在处理中文等多字节字符时更为明显。本文将从计算机存储及传输字符的基本编码标准入手,详细介绍...
在Web开发中,SQL用于与数据库交互,支持网站的数据存储和检索。 综上所述,"W3CSchool全套Web开发手册"是一个宝贵的资源,它提供了从基础到进阶的Web开发知识,涵盖了从页面结构到动态交互,再到数据库管理的各个...
《夏帮贵《Java web开发完全掌握》示例源代码(6-9章)》是针对Java Web开发的一份重要参考资料,它包含了作者夏帮贵在书籍中讲解的关键概念和实践示例。Java Web开发是构建基于Java技术的互联网应用程序的过程,...
《Web开发手册大全》是一个全面涵盖Web开发技术的资源库,包含了从基础到高级的各种手册。这个压缩包中包括了DHTML手册、HTML完全手册、JavaScript手册、CSS样式表中文手册、DOM手册以及jQuery文档,这些手册对于Web...