不执行数据库查询 mysql_real_escape_string_安全替代mysql_real_escape_string吗? (PHP)

我正在将变量传递给执行查询的函数

MySQL连接仅在函数内部发生,并在函数内部关闭

我希望能够在将字符串发送给函数之前安全地转义字符串

我无法使用mysql_real_escape_string,因为它需要MySQL连接(仅在函数内部进行)

我知道简单的答案是在函数内部转义字符串,但是我不能这样做,因为我需要发送字符串的一些转义的和一些非转义的部分

例如,我需要运行以下函数:

myquery("'" . escape_me("My string") . "'");

请注意,我要发送两个不加转义的撇号,其中带有转义的字符串.由于这个原因,我无法对myquery函数内部的参数做一揽子mysql_real_escape_string.

我发现以下代码,建议我可以将其用作mysql_real_escape_string的替代方法:

// escape characters

function escape_me($value) {

$return = '';

for($i = 0; $i < strlen($value); ++$i) {

$char = $value[$i];

$ord = ord($char);

if($char !== "'" && $char !== "\"" && $char !== '\\' && $ord >= 32 && $ord <= 126)

$return .= $char;

else

$return .= '\\x' . dechex($ord);

}

return $return;

}

我不知道此功能对多字节攻击是否安全,但我认为每次查询时也需要撤消该功能

例如,输入:

在数据库中测试3的“确定”变为测试3x27s x22OKx22

所以我的主要问题是:

您是否知道是否可以使用另一个函数替代mysql_real_escape_string来安全地转义字符?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值