博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql注入的防护
阅读量:4951 次
发布时间:2019-06-11

本文共 653 字,大约阅读时间需要 2 分钟。

一、严格的数据类型

在Java,C#等高级语言中,几乎不存在数字类型注入,而对于PHP,ASP等弱类型语言,就存在了危险。

防御数字型注入相对简单,如果不需要输入字符型数据,则可以用is_numeric()、ctype_digit()等函数判断数据类型。

二、特殊字符转义

字符型注入一般需要单引号闭合,首先想到的应对方法,就是字符转义。

在PHP中可用addslashes()函数进行转义字符,可以将单双引号、反斜线及NULL加上反斜线转义。还可以通过过滤关键字,如:select,union select , order by ,information, table,等等。

在特殊字符转义时,还有另一种更加难以防范的sql注入:二次注入攻击。

我们写入数据  admin',会变成  admin\',但是在插入的数据库时是不带有反斜杠的, 也就是说数据库中的数据还是  admin',这样的话,如果这个网站有另一个地方查询这个字段的内容,就造成了二次注入攻击。

三、使用预编译语句

预编译技术可以有效的防御sql注入,我开发是个弱鸡,就不细细讲解了。

采用预编译技术要注意,不要使用动态拼接sql语句。

简单来说,动态拼接语句就是字符串连接变量的意思,如:

变量="select.......where id = "+变量;

总之,在存在sql语句的代码中,一定要谨慎,最好不要用动态拼接SQL语句。

 

转载于:https://www.cnblogs.com/whitehawk/p/9880184.html

你可能感兴趣的文章
MapReduce 重要组件——Recordreader组件 [转]
查看>>
webdriver api
查看>>
转载-FileZilla Server源码分析(1)
查看>>
apache 实现图标缓存客户端
查看>>
MediaWiki左侧导航栏通过特殊页面就可以设置。
查看>>
html基础之DOM操作
查看>>
几种图表库
查看>>
揭秘:黑客必备的Kali Linux是什么,有哪些弊端?
查看>>
linux系统的远程控制方法——学神IT教育
查看>>
springboot+mybatis报错Invalid bound statement (not found)
查看>>
Linux环境下SolrCloud集群环境搭建关键步骤
查看>>
P3565 [POI2014]HOT-Hotels
查看>>
UVa11078:Open Credit System
查看>>
MongoDB的简单使用
查看>>
git clone 遇到的问题
查看>>
hdfs 命令使用
查看>>
hdu 1709 The Balance
查看>>
prometheus配置
查看>>
定宽320 缩放适配手机屏幕
查看>>
BZOJ 2120 数颜色 【带修改莫队】
查看>>