严格意义上讲,没有绝对安全的网站。但这并不意味着我们什么也做不了,我们可以让网站变得更安全,使网站能够应对几乎接近所有的安全威胁。对于普通网站来讲,已经非常优秀了。当然,这不包括安全性能要求极高的系统,如一些涉及资金流通的系统。而影响网站安全的因素有很多,比如服务器、程序等影响网站安全最大的组成部件。今天,艺琼网络对网站程序的安全性进行一个简单的分析。
尽量避免使用通用的内容管理系统(CMS)
之所以这样说,并不是否定通用CMS的优秀。实际上,市场上通用的CMS经历了一二十年的不断改进、优化,功能已经十分完善,性能也得到了很大程度上的提高。然而,最大的问题出在“通用”上,一方面,为了实现通用,CMS需要开发大量的可能被使用到的功能,导致了系统的臃肿,影响了系统运行的性能。系统越庞大,出现漏洞的概率也更大。通用CMS一般会被大量的网站所采用,一旦发现新的漏洞,很快就会被大量的程序员所掌握。这时,所有使用该CMS的网站都将受到安全威胁。除非CMS官方及时发布补丁并且站长要在第一时间给网站打上补丁。然而,在实践过程中,这并非易事,这意味着站长需要时刻关注该CMS的安全性并及时进行处理。另一方面,绝大多数站长在网站上线后会将目光聚集在网站内容的管理上,而非网站安全。所以,很容易被忽略,任由漏洞持续存在,给未来网站运行留下安全隐患。
从安全角度考虑的话,还有另一个选项。自研的CMS可能需要更多的开发时间,但由于自研CMS专门针对某一网站打造,所以,完全没有过多的功能,能够做到“需要什么,开发什么”,使得程序执行效率最优化。另一方面,自研的CMS的专用性,仅为某一个网站使用,即便存在漏洞,也不可能广泛扩散,因此,安全性大大提升。
笔者使用过一些第三方的通用CMS,经过实践测试,结果隔三岔五就会植入恶意代码、广告代码或其他非法内容、隐藏链接等,每次都要耗费大量的时间去清理。然而治标不治本,除非修补上这个漏洞。尽管如此也难以保证在下一个漏洞被曝出时网站仍处于安全状态。与此同时,使用自研CMS的网站稳如泰山。通过分析服务器日志发现,两者每天都有较多的请求尝试各种方法进行漏洞遍历,试图找到其中薄弱的一环进行入侵。
完善程序安全机制
优秀的程序往往在功能上满足网站需要的同时注重网站的安全性能,这涉及到两个方面。第一个方面是功能逻辑上的安全性,这是普通用户都能检出漏洞,由于功能流程不完善,导致被利用。比如,某商城网站上给账户充值时在某种特定的情况下竟然连充了2笔,显然,功能逻辑上存在问题。这种问题往往在测试网站功能的时候能被发现并修正,完善的测试机制能大大降低功能逻辑上的安全风险。另一方面是程序内容传输的安全性,众所周知,网站的所有操作就是实现了根据某种特定逻辑的存取运算过程。比如发布一条留言,这会向数据库中存入一条记录。比如打开一篇新闻,这会从数据库取出一条记录。而正是因为这个存和取的过程危机四伏。比如在向数据库存入一条数据时,这条数据中带有别有用心的代码,那么,在读取这条数据时就会带来严重的危害。因此,我们的程序要在将数据存入数据库前对数据进行安全检查,只有通过安全检查的数据才被允许存入数据库。不仅如此,读取数据也一样要进行把关,每一个取数据的请求都会携带一些附加的参数,而这些附加的参数就很容易被黑客利用,使程序无法正常正常执行或以此达成一些非法的目的。所以,但凡涉及到数据存取的地方都应该增设更严苛的安全检查机制。如果你的网站还涉及到资金流通等重要领域,建议布置SSL安全证书,使网站支持https协议,这样能够更有效地保护远程数据传输中的安全性,避免被篡改。
其实,上面所提到的仅仅是众多影响网站安全因素的冰山一角,但也是影响网站程序安全最常见的因素。另外,关于服务器影响网站安全的问题,下一期咱们继续研究。