gpt4 book ai didi

php - 为 MySQL 清理用户输入

转载 作者:行者123 更新时间:2023-11-29 01:44:03 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
The ultimate clean/secure function

我的一些编码遇到了一些问题,我不情愿地在我的脚本中发现了一个可能的 sql 注入(inject),我似乎无法解决这个问题,所以我想知道这里是否有人可以提供帮助

我能说我的脚本编码很好吗,只是我完全不知道数据库注入(inject)是如何发生的,它们是如何工作的或者如何防止它们,但是很明显我的清理功能没有按预期工作。

这是有问题的代码块,当我在 id 之后添加以下内容时,它会吐出一个 MySQL 错误,我已经阅读了很多关于这意味着我的代码容易受到攻击的信息。

&id=369';

因此,仅添加一个逗号和一个分号会破坏 MySQL 查询,这是不希望的。这是处理查询和显示数据的代码;

$id = $this->clean($_GET['id']);
#$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_STRING);
$pm_query = mysql_query("SELECT * FROM `staff_pm` WHERE `id` = '{$id}' AND `status` IN(0, 1)") or die(''.mysql_error());

所以我尝试了 PHP 中的一个集成函数,但它吐出相同的 sql 错误,这是我的清理函数,我事先被告知是好的:

function clean( $str )
{
return mysql_real_escape_string( htmlspecialchars( trim( $str ) ) );
}

只是真的很想知道您对此事的看法,一直担心我的编码会被寻找此类漏洞的人利用,我真的很想确保它符合抓取并学习一些技术以更好地保护它。

我被告知要转换为 PDO,但是转换似乎是一项艰巨的工作,我会等到我重新创建应用程序后再这样做,我将在那里寻找更多对象-定向方法。

我收到的 SQL 错误是这样的:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'; AND status IN(0, 1)' at line 1

谢谢你的帮助,我真的很感激。

问候

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com