WEB开发网
开发学院数据库MSSQL Server SQL Injection(SQL注入)介绍及SQL Injection攻击... 阅读

SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具

 2008-09-10 10:04:16 来源:WEB开发网   
核心提示: 说到这里,可能大家都明白了,SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具(3),所谓的最好方法是Stored Procedure,Yes! That is! 要想做出安全可靠的Server application,在TCP/IP这个大框架下,什么都是

说到这里,可能大家都明白了,所谓的最好方法是Stored Procedure。Yes! That is!

要想做出安全可靠的Server application,你最好把自己当作两个人,一个DBA,一个Coder(ASP Coder,PHP Coder or others),很多人往往只知道:我在做一个BBS,我在做一个留言本,我在做一个新闻发布系统,我们的流程都是这样的,给用户一个表单,让用户提交,然后去写数据库,用的时候根据条件把数据记录找出来,然后显示。没事,如果你 是一个业余爱好者,只想自己写点小东西玩玩,这足够了!如果你想把WebDev作为你的职业,或者说,你想成为一个非常专业的业余爱好者,你必须当自己是一个DBA+Coder,至于要不要是一个Designer就看你的能力和精力咯!

好了,点到为止,我就说这么多,彻底的解决方法是要在DBMS上写入你的数据操作计划,让服务器在开始执行之前知道你的意图,不要粗暴的告诉它:我就是要你执行这个命令,不要问我为什么!

实现方法嘛,目前比较普遍的,也比较容易实现的就是存储过程了,应用存储过程不仅可以从根本上解决SQL Injection这个安全问题,还会使得你的应用程序速度成倍增长(这个增长的幅度甚至可能达到一个数量级,这跟很多因素有关,不好一概而论),还会使得你开发的系统更想大型系统,拥有更好的架构体系(例如MVC模式)。

在 MySQL 4.1.x及其后续版本和ODBC中,提供了一种叫做prepared statements的东西,它 本质上也是一种存储过程,一种系统预置(相对于用户自定义)的存储过程。

如果你没有条件用上存储过程(比如数据库不支持,MySQL,Access,SQLite等都不支持),那么就只能将SQL Injection扼杀在摇篮里了。解决方法,我也只简单的说一句:不要相信任何来自客户端的数据。这个客户端的数据,可以通过很多途径被提交,比如get,post ,cookie,browser参数,IP地址,等等,只要不是服务器上获取的就都算客户端数据,只要是客户端数据,都是不可信的,在TCP/IP这个大框架下,什么都是可以伪造的,包括IP地址。

上一页  1 2 3 4 5  下一页

Tags:SQL Injection SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接