web开发中的一些完全有关问题

web开发中的一些完全问题

最近朋友去面一个测试岗,有一道题目为:什么是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系统都是调用第三方支付来达成交易,那么交易时候的安全风险也移交给了第三方;但要注意的是,交易完成后,本地系统的逻辑处理也是要求安全级别很高的;关系到用户付款后得到的相关服务或实物问题;所以应该重视系统与第三方支付调用间的安全问题;比如调用微信支付后,微信会在前端返回一个状态,但同时微信会有后台异步通知本次支付是否成功;所以安全的策略就是,应该在后台接受到通知时做相关逻辑处理,这样后台的逻辑处理完全与用户脱离开来的,安全性就高很多了;

 

    其他安全问题还有很多,甚至包括人为的漏洞;比如最近的“光大证券乌龙指”事件等等;安全问题永远是个矛盾体,有攻击就有防御,有盾必有矛,一路较量,此消彼长,彼消此长,永远是个没完的话题;所以需要做好必要的防范,做好观察,做好监控,及时补丁和更新,防范于未然;