SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具
2008-09-10 10:04:16 来源:WEB开发网说到这里,可能大家都明白了,所谓的最好方法是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地址。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接