俗话说,隔行如隔山,到了计算机这行就更夸张了,外人也许不明白,都是搞计算机的,怎么差别就那 么大呢?搞computer.software的不懂computer.hardware的还好理解,不过搞 computer.software.develop.*的不懂computer.software.security.*的在外人看来实在有些丢人,实 际上呢,谁有那个工夫
买了本好久不买了的《黑客防线》,翻了翻,发现现在的主流入侵方法(或者说,破坏方法)俨然已经是SQL注入了,各种文章也越来越流于介绍 NBSI、HDSI等等工具的使用方法,看了几篇文章,貌似除了穿插的截图不太一样,其他的都大致相同,跟一本使用手册一样。还有的人认为JSP+ Oracle就不会或者很难被注入,实际上大家都明白,纯粹的字符串拼接逻辑才是SQL注入的温床。
随着各种webapp爆发式地推出,webapp自身的安全越来越不容忽视了。以前我也鼓捣过SQL注入,那时的目的还是想以这种入侵方法作为 辅助,以拿到root或者Administrators组权限为最终目的,而现在,能打掉一个论坛、一个CMS就已经是高手了,而且确实,这些 webapp的价值对于网站所有者而言有时超过服务器系统的价值:服务器OS可以重装,但数据或者代码的损失可是不可估量的。更有甚者,已经出现了靠 webapp或者数据向受害一方勒索钱财的案例。一代不如一代。
看来觉得web层逻辑随便找个新手来搞的观念要改一改了,不只要精通html+javascript做客户端验证,服务器端的验证一样很重要, 还要明白图形验证码这样的需要两端验证的方法,而且不只是过滤字符串那么简单,还要涉及sql、hql、jdoql等等查询语言的语法验证etc.,大概 熟悉antlr势在必行了。
我以往的观点是除非系统的管理员权限失守,否则其他的入侵不算本事,赫赫,很单纯的从技术方面的考量。现在不行了,负责一些的话就要考虑自己参与的webapp上线后要真正为客户创造价值,而不是创造麻烦。
有时间要检查一下我们用的一个web层组件的代码了,如果丫也是搞字符串拼接的话(而且很可能就是这么搞的),那除了几个hard code在配置文件里的的用于显示固定栏目内容的查询,其他的……
各位webapp developer同行也要注意了,不能抱着防君子不防小人的想法来对待安全问题了,因为在互联网上你不知道对方是个小人。