文章目录 一、什么是sql注入二、sql注入处理1、使用内置函数2、使用pdo预处理语句 三、安全注意事项 一、什么是sql注入 在应用程序中,为了和用户交互,允许用户提交输入数
在应用程序中,为了和用户交互,允许用户提交输入数据,假如应用程序并没有对用户输入数据进行处理,攻击者可以输入一些跟sql语句
相关的字符串(一般带有特殊字符)从而让应用程序执行危险的 SQL 操作
,导致泄漏
机密数据(比如用户信息)或直接修改删除
线上的数据。
函数一: Mysqli_real_escape_string
作用: 转义
在 SQL 语句中使用的字符串中的特殊字符
。
语法:
mysqli_real_escape_string($connection, $escapestring);选项参数:connection必需。规定要使用的 MySQL 连接。escapestring必需。要转义的字符串。编码的字符是 NUL(ASCII 0)、\n、\r、\、'、" 和 Control-Z。
函数二: addcslashes()
(主要用来防止like语句
注入)
作用: 使用反斜线转义字符串中的字符
语法:
addcslashes($string, $characters)选项参数:string必需。规定要转义的字符串。characters必需。规定要转义的字符或字符范围。
例:
//获取用户名$username = $_GET['username']; //将特殊字符转义为普通字符$username = addcslashes(mysqli_real_escape_string($conn, $username), "%_");//执行sql语句操作mysqli_query($conn, "SELECT FROM messages WHERE username LIKE '{$username}%'");
pdo 预处理语句会对占位符绑定的值进行处理,也可以有效防止sql注入攻击
函数: PDO::prepare
语法:
public PDO::prepare(string $query, array $options = []): PDOStatement|false选项参数:query:必须是对目标数据库服务器有效的 SQL 语句模板。options:数组包含一个或多个 key=>value 键值对,为返回的 PDOStatement 对象设置属性。 常见用法是:设置 PDO::ATTR_CURSOR 为 PDO::CURSOR_SCROLL,将得到可滚动的光标。 某些驱动有驱动级的选项,在 prepare 时就设置。
例:
$sql = 'SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour'; $sth = $dbh->prepare($sql, [PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY]);$sth->execute(['calories' => 150, 'colour' => 'red']);$red = $sth->fetchAll();$sth->execute([':calories' => 175, ':colour' => 'yellow']);$yellow = $sth->fetchAll();
来源地址:https://blog.csdn.net/change_any_time/article/details/128698821
--结束END--
本文标题: php sql注入
本文链接: https://www.lsjlt.com/news/383829.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0