sql注入如何防止,有效防止sql注入的方法( 三 )


三、Regular Expression

简称REs是一种非常强大的文字验证技术 。 通常我们在设计程序时 , 如果要在TEXT中输入数字的话 , 那么我们会用到IsNumberic函数来限制 , 但是
很多情况 , 为了用户方便 , 我们不止要用到限定数字这一个技术 , 还有很多关系式需要我们去遵循 , 如手机号码要限定成11为 , 邮箱号码要限制相应的格式等 。 这
时候就用到了REs这种技术 。 它可以为我们要输入的内容提供一个模板 , 让用户的输入必须遵循这个模板的格式 , 如果格式不正确 , 则程序不能继续执行 。 这样也
可以避免SQL注入 。
例如
\d -------代表数字
\d{5} -------代表5位数字
\w+@\w+ -------@前的w+表示要有至少一个的字符 , @代表这个模板中必须有一个@字符 。
当然在使用这种技术之前 , 是有条件的 , 首先 , 它需要引用一个命名空间 , 具体如下:
Imports RE=System.Text.RegularExpressions.Regex
这样还不够 , 我们需要一个方法来做验证用户输入是否正确的工作 , 这里 , 我们要用到一个方法match , 具体使用如下:
Dim input,pattern As String

Input=Me.txtInput.TextTrim()

Pattern=Me.txtPattern.Text

If Re.Mathc(input,pattern).Success Then ‘使用Match方法来对用户输入的内容与定义好的模板进行验证

MessageBox.Show("True,input matches pattern") Else MessageBox.Show("False,input does not match pattern") End if
以上 , 是通过看.net视频总结出来的避免SQL注入的三种方法 , 由于对专业知识了解有限 , 具体原理并不清楚 , 有待以后深入学习后总结 。
什么是sql注入 , 怎么防止注入? 原理
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序 , 而这些输入大都是SQL语法里的一些组合 , 通过执行SQL语句进而执行攻击者所要的操作 , 其主要原因是程序没有细致地过滤用户输入的数据 , 致使非法数据侵入系统 。
根据相关技术原理 , SQL注入可以分为平台层注入和代码层注入 。 前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤 , 从而执行了非法的数据查询 。 基于此 , SQL注入的产生原因通常表现在以下几方面:①不当的类型处理;②不安全的数据库配置;③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当 。

攻击
当应用程序使用输入内容来构造动态sql语句以访问数据库时 , 会发生sql注入攻击 。 如果代码使用存储过程 , 而这些存储过程作为包含未筛选的用户输入的字符串来传递 , 也会发生sql注入 。 sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令 。 相关的SQL注入可以通过测试工具pangolin进行 。 如果应用程序使用特权过高的帐户连接到数据库 , 这种问题会变得很严重 。 在某些表单中 , 用户输入的内容直接用来构造动态sql命令 , 或者作为存储过程的输入参数 , 这些表单特别容易受到sql注入的攻击 。 而许多网站程序在编写时 , 没有对用户输入的合法性进行判断或者程序中本身的变量处理不当 , 使应用程序存在安全隐患 。 这样 , 用户就可以提交一段数据库查询的代码 , 根据程序返回的结果 , 获得一些敏感的信息或者控制整个服务器 , 于是sql注入就发生了 。

推荐阅读