• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php如何防止sql注入

php 搞代码 4年前 (2022-01-04) 31次浏览 已收录 0个评论

简单的SQL注入示例

例如,A有一个银行网站。已为银行客户提供了一个网络界面,以查看其帐号和余额。您的银行网站使用http://example.com/get_account_details.php?account_id=102等网址从数据库中提取详细信息。

例如,get_account_details.php的代码,如下所示:

$accountId = $_GET['account_id'];$query = "SELECT accountNumber, balance FROM accounts WHERE accountId = $accountId";

客户accountId通过查询字符串作为account_id传递。与上面的Url一样,如果用户的帐户ID为102并且它在查询字符串中传递。Php脚本将创建如下所示的查询。

$query = "SELECT accountNumber, balance FROM accounts WHERE accountId = 102";

accountId 102获取accountNumber和余额详细信息,并提供给客户。

相关推荐:《php教程》

我们假设另一个场景,智能客户已经通过了account_id,就像0 OR 1=1查询字符串一样。现在会发生什么?PHP脚本将创建如下所示的查询并在数据库上执行。

$query = "SELECT accountNumber, balance FROM accounts WHERE accountId = 0 OR 1=1";

查看由脚本和数据库返回的结果创建的查询。您可以看到此查询返回了所有帐号和可用余额。

这称为SQL注入。这是一个简单的方式,其实可以有很多方法来进行SQL注入。下面我们就来看一下如何使用PHP MySQLi驱动程序和PHP PDO驱动程序防止SQL注入。

使用PHP-MySQLi驱动程序

可以使用PHP-MySQLi驱动程序预处理语句来避免这些类型的SQL注入。

PHP防止SQL注入的代码如下:

$accountId = $_GET['account_id'];  if ($stmt = $mysqli->prepare('SELECT accountNumber, balance FROM accounts WHERE accountId = ?')) {       $stmt->bind_par<em style="color:transparent">来源gao.dai.ma.com搞@代*码网</em>am("s", $accountId);      $stmt->execute();   $result = $stmt->get_result();   while ($row = $result->fetch_assoc()) { // do something here }      $stmt->close(); }

使用PHP-PDO驱动程序

可以使用PHP-PDO驱动程序prepare语句来避免这些类型的SQL注入。

PHP解决上面的SQL注入问题的代码如下:

$accountId = $_GET['account_id'];  if ($stmt = $pdo->prepare('SELECT accountNumber, balance FROM accounts WHERE accountId = :accountId')) {       $stmt->execute(array('name' => $name));   foreach ($stmt as $row) { // do something here }      $stmt->close(); }

以上就是php如何防止sql注入的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php如何防止sql注入

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址