php - 为什么将值传递给 PHP 函数然后将其转义并返回是不安全的

标签 php mysql mysqli

<分区>

我不知道这是不是一个好问题,但今天它让我陷入了很多疑问。所以我使用 PHP 函数来基本上节省时间和转义值,就像我们以前使用 mysql_real_escape() 所做的那样,但我被告知这样做实际上很危险,这就是我正在做的:

function mysql_string_safe($stringtoclean)
{
    $safestring = mysqli_real_escape_string($GLOBALS['confDBLink'],$stringtoclean);
    return $safestring;
}

我现在有疑问.. 这样做实际上是不安全的吗?因为我所做的只是向函数发送一个值,然后在 mysqli_real_escape_string 中转义它? (然后当然返回) 所以当我真的想转义一个值时,我会做以下事情: mysql_string_safe($valuetoescape); 我真的很想知道,不仅因为怀疑而且也想知道,因为如果这真的像我被告知的那样危险,那么我也会从我的应用程序中删除它。 非常感谢您的宝贵时间。

最佳答案

本身没有什么不安全的,但是使用准备好的语句/绑定(bind)值比显式转义输入更可取。由于以下几个原因,后者可能不安全:

  • 您可能会忘记对输入进行转义
  • 您可能会不小心将相同的输入转义两次

关于php - 为什么将值传递给 PHP 函数然后将其转义并返回是不安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13148569/

相关文章:

php - 从 symfony 3.4 迁移到 symfony 4

php - 使用 CodeIgniter 的正则表达式缩小最终的 HTML 输出

php - Magento 订单电子邮件未发送给客户

mysql - MYSQL中字符串转整数并自增

php - 从 MYSQL 更新到 MYSQLI

php - Mysqli_error() 不起作用

PHP+MySQL : Problem with Update query

php - CakePHP saveAll 方法

php - 根据表jquery中的数据填充多维数组

php - Mysql连接不上,目标机器主动拒绝