SHIL 2011-07-16
1.前后、端都要检查使用者输入
许多程序开发人员喜欢用JavaScript来检查使用者输入的内容,虽然透过正规表达能检视出一些不正常的语法,然而如果黑客将页面储回自己的计算机,或是透过JavaScript语法修改DOM,就能移除掉这些检查机制。
因此前端做过的检查工作,丢给后端程序之前,仍必须查验一遍,千万不要以为前端做过检查,就可以放行。
2.过滤使用者输入内容
目前网站安全最常见的问题,莫过于SQLInjection和XSS攻击手法,而这两个攻击的源头,都来自于没有妥善过滤由使用者传来的数据,除了输入数据之外,包含cookie、参数都可能成为黑客利用的工具。
这些攻击手法都包含一些特定字符,像是「'」、「`」、「"」、「<」、「>」、「%xx」、「\0xx」等,因此在任何使用者可以传递字符的地方,都要设下检查的机制,过滤数据中是否包含这些特殊字符,将特殊字符进行转化,例如将「'」转换成「'」或「<」转换成「<」。
3.妥善处理错误讯息
有许多程序开发人员对于错误处理不够细心,导致脚本语法或数据库发生错误时,直接让错误码呈现在浏览器,错误信息对一般的使用者没什么意义,但往往会给黑客带来许多参考价值。
4.检查上传内容
由于Web2.0带来的强调分享机制,因此也越来越多网站允许使用者上传数据。然而黑客有可能在上传的档名上动手脚,如果不加以检查,就有可能执行对网站有所危害的脚本程序。
5.敏感信息要妥善处理
有些档案该删就删,例如一些应用程序的安装脚本不要留在系统上,账号等相关的敏感数据一定要设在防止搜寻引擎索引、快取的数据夹,或设定相关的防索引语法。
6.将密码以编码方式储进数据库
密码不要采用明码的方式储进数据库,透过像是md5的方式进行编码,让敏感信息可以受到更好的保障。