对预防SQL注入的几点方法
本文分析了网站数据库预防SQL注入的方法,并结合nat123分享了外网访问内网数据库的方法。
操作方法
- 01
预防数字注入: 很简单,因为ColID字段的类型是int的,那么我们只需要验证一下传递过来的id是不是整数就可以了。是整数就不存在注入;如果不是那么就有可能存在注入。即使不存在注入,把一个不是整数的id拼接进去也会造成执行错误。所以说不管是不是为了预防SQL注入,也都应该验证id是不是整数。 验证方法嘛,可以用TryParse,可以用正则,也可以自己写函数验证。但是不建议用try异常的方式,因为这个有效率问题。 这里还有一个特殊情况,就是对于批量删除这类的会传递过来多个数字,比如“1,2,3,10”,这个也需要验证一下,万一有人利用这个漏洞呢。至于验证方法也很简单,自己写个函数就ok了。
- 02
日期时间: 这个和数字的情况是一样的,验证是不是日期时间即可。 字符串: 对于SQL 来说在一对单引号内部的两个单引号表示一个字符串形式的单引号。这样我们就把罪魁祸首改造成了字符串了。在一对单引号内的“--”也是普通的字符串而不代表注释。
- 03
罪魁祸首是单引号,想不明白为什么有许多人都去过滤 “delete、update”这一类的关键字,他们都是安善良民呀,他们是很冤枉的。当然了,如果前提是程序都已经写好了,不能修改内部代码,那就另当别论了。至于“--”顶多算是帮凶,如果您不放心的话,把他处理了也行。 总结:数字、日期时间的,验证类型;字符串的,处理好单引号。另外为了安全起见,不要用sa连接数据库,xp_cmdshell这一类的有危险的扩展存储过程也应该处理一下(比如删除)。
- 04
外网访问内网mysql数据库的方法: 明确内网mysql数据库访问地址,并确保mysql数据库服务正常。 在mysql数据库服务器局域网内安装nat123客户端,并使用它。注册登陆。 主面板/端口映射列表/添加映射。
- 05
设置映射信息。选择全端口映射类型。填写内网mysql数据库服务器IP地址,和外网访问的域名。可以使用自己的域名,也可以使用二级域名。将鼠标放在输入框有向导提示。 添加映射后,可查看映射状态。将鼠标放在映射图标上有提示当着状态信息。新添加映射一般几分钟内生效。
- 06
外网访问端安装nat123客户端并使用访问者。 访问者打开mysql全端口映射后的域名和访问端口。如在添加访问地址时,同时勾选允许局域网访问,则在访问者局域网内都可以访问。 查看访问者状态。鼠标放在访问者图标上,提示当前状态信息。