最近学习了如何利用SQL注入漏洞获取数据,获取权限,以及一些攻击的使用,本次主要介绍使用中的相关安全问题。
数据库用户权限分明
建议对数据库设置最小权限分配,避免获取到数据库的权限后,进一步通过数据库权限获取服务器权限。
代码层防御常用过滤函数
str_replace()函数:替换过滤。
str_replace()函数:可以用其他字符替换字符串中的一些字符(区分大小写)。
列如,对一下字符进行替换,字符如下。
单引号(') 双引号(") 反斜杠(\) NULL
htmlspecialchars()函数:实体化过滤。
htmlspecialchars()函数把预定义的字符串转换为HTML实体。
示例字符如下。
& (和号 )成为 &
" (双引号) 成为 "
' (单引号) '
<> 成为 <>
就是把预定义的字符变成一个纯字符
addslashes()函数:添加转义字符。
addslashes()函数返回在预定义字符之前添加反斜杠的字符串。
示例字符如下。
单引号(')
双引号(")
反斜杠(\)
NULL
使用PDO预编译语句
使用预处理执行SQL语句,对所有传入SQL语句中的变量做绑定。这样,用户拼接进来的变量,无论输入什么内容,都会被当作替代符号"?"替代,并且数据库不会把恶意语句拼接进来的数据当作部分SQL语句去解析。