网站防止sql注入的方法

介绍

这篇文章给大家分享的是有关网站防止sql注入的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

防sql注入,是一种网站防止黑客攻击的方式。网站要怎么防范最最常见sql注入式攻击呢,我们先从sql注入式攻击的原理来说起。

<强> 1。没有正确过滤特殊字符不能防止sql注入

例如单引号和分号如果你的sql语句是这样,又没过滤”“单引号:“SELECT * FROMtablesWHEREparam=& # 39;“+ RequestString +“& # 39;;“攻击者将用户名变量(即RequestString)设置为:一个# 39;或# 39;t # 39;=& # 39; t

此时原始语句发生了变化:SELECT * FROMtablesWHEREparam=& # 39;一个# 39;或# 39;t # 39;=& # 39; t # 39;;

如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为赋值& # 39;t # 39;=& # 39; t永远是正确的。这种方式是跳过身份认证的最简单手段

再配合”;“分号可以进行更多的sql注入攻击“,“分号用来执行多个语句。下面语句中的RequestString的值将会导致删除“表”表,又可以从“datatable”表中选择所有的数据(实际上就是透露了每一个用户的信息)。# 39;;DROPTABLEtables; SELECT * FROMdataTablesWHEREparamLIKE& # 39; %

这就将最终的sql语句变成下面这个样子:SELECT * FROMtablesWHEREparam=& # 39;一个# 39;;DROPTABLEtables; SELECT * FROMdataTablesWHEREparamLIKE& # 39; % & # 39;;

通过这种原理可以执行很多很多攻击了。

<强> 2。不正确处理变量类型不能防止sql注入

如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个sql语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型)就会发生这种攻击。

例如:“SELECT * FROMtablesWHEREid=? RequestID +“,“

从这个语句可以看的出,作者希望RequestID是一个数字。不过,如果终端用户选择一个字符串,就绕过了对转义字符的需要,例如,将RequestID设置为1;DROPTABLEtables就不需要上面说的”的“单引号了,照样可以进行攻击:会将“表”表从数据库中删除,sql语句变成:SELECT * FROMDATAWHEREid=1; DROPTABLEusers。

感谢各位的阅读!关于“网站防止sql注入的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

网站防止sql注入的方法