这篇文章给大家分享的是有关网站防止sql注入的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
防sql注入,是一种网站防止黑客攻击的方式。网站要怎么防范最最常见SQL注入式攻击呢,我们先从SQL注入式攻击的原理来说起。
1.没有正确过滤特殊字符不能防止sql注入
例如单引号和分号如果你的sql语句是这样,又没过滤“’”单引号:"SELECT*FROMtablesWHEREparam='"+RequestString+"';"攻击者将用户名变量(即RequestString)设置为:a'or't'='t
此时原始语句发生了变化:SELECT*FROMtablesWHEREparam='a'OR't'='t';
如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为赋值't'='t永远是正确的。这种方式是跳过身份认证的最简单手段
再配合“;”分号可以进行更多的SQL注入攻击";"分号用来执行多个语句。下面语句中的RequestString的值将会导致删除“tables”表,又可以从“dataTables”表中选择所有的数据(实际上就是透露了每一个用户的信息)。a';DROPTABLEtables;SELECT*FROMdataTablesWHEREparamLIKE'%
这就将最终的SQL语句变成下面这个样子:SELECT*FROMtablesWHEREparam='a';DROPTABLEtables;SELECT*FROMdataTablesWHEREparamLIKE'%';
通过这种原理可以执行很多很多攻击了。
2.不正确处理变量类型不能防止sql注入
如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型)就会发生这种攻击。
例如:“SELECT*FROMtablesWHEREid="+RequestID+";"
从这个语句可以看出,作者希望RequestID是一个数字。不过,如果终端用户选择一个字符串,就绕过了对转义字符的需要。例如,将RequestID设置为1;DROPTABLEtables就不需要上面说的“‘”单引号了,照样可以进行攻击:会将“tables”表从数据库中删除,SQL语句变成:SELECT*FROMDATAWHEREid=1;DROPTABLEusers。
感谢各位的阅读!关于“网站防止sql注入的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。