为了账号安全,请及时绑定邮箱和手机立即绑定

“每引号前都斜杠”问题

/ 猿问

“每引号前都斜杠”问题

萧十郎 2019-12-06 11:12:40

我有一个包含表单的php页面。


有时,此页面会提交给自己(例如上传图片时)。


我不希望用户不得不一次又一次地填写每个字段,因此我将其用作表单内文本输入的值:


value="<?php echo htmlentities(@$_POST['annonsera_headline'],ENT_COMPAT,'UTF-8');?>">

除了在每个双引号之前添加“ \”符号外,此方法有效。


例如,编写19英寸的轮子会在页面提交给自己之后给出:


  19\" wheels

而且,如果我什至不使用htmlentities,则引号后的所有内容都会消失。


这里有什么问题?


更新:


好的,这个问题是magic_quotes ...这在我的服务器上启用了...


我应该禁用它吗?我具有root访问权,这是我的服务器:)


禁用它有什么危害?


查看完整描述

3 回答

?
呼啦一阵风

好像您已打开魔术引号。使用以下条件,并stripslashes与要处理的任何文本配合使用:


if(get_magic_quotes_gpc())

{

   $your_text = stripslashes($your_text);

}

现在您可以$your_text正常处理变量了。


更新:


魔术语录在这里得到解释。对于编写良好的代码,禁用它通常没有任何危害。


查看完整回答
反对 2019-12-06
?
RISEBY

您可能已打开魔术引号。您也需要stripslashes()它。


最好的方法是将其包装在一个函数中:


function get_string($array, $index, $default = null) {

    if (isset($array[$index]) && strlen($value = trim($array[$index])) > 0) {

        return get_magic_quotes_gpc() ? stripslashes($value) : $value;

    } else {

        return $default;

    }

}

可以用作


$annonsera_headline = get_string($_POST, 'annonsera_headline');

顺便说说:


而且,如果我什至不使用htmlentities,则引号后的所有内容都会消失。


实际上,它仍在HTML源代码中,您只是看不到它。做一个查看源 ;)


更新根据您的更新:在魔术引号,以防止有SQL注入 攻击在初学者的代码。您经常在第三方主持人中看到这一点。如果您真的知道您在代码中正在做什么,则可以安全地将其关闭。但是,如果您想使代码可分发,那么在收集请求参数时,您将真正考虑到这一点。为此,上述功能的例子是非常适合(你只需要编写simliar get_boolean(),get_number(),get_array()功能自己)。


查看完整回答
反对 2019-12-06
?
湖上湖

是的,如果可以的话,应该禁用魔术引号。该功能已弃用,将来可能会完全消失。如果您依靠魔术引号来转义数据(例如,将数据插入数据库时),则如果禁用它,可能会面临sql注入漏洞。您应该检查所有查询,并确保正在使用mysql_real_escape_string()。


我包含以下文件,以撤消部署到不受我控制的服务器中的应用程序中的魔术引号。


<?php

set_magic_quotes_runtime(0);


function _remove_magic_quotes(&$input) {

    if(is_array($input)) {

        foreach(array_keys($input) as $key) _remove_magic_quotes($input[$key]);

    }

    else $input = stripslashes($input);

}

if(get_magic_quotes_gpc()) {

    _remove_magic_quotes($_REQUEST);

    _remove_magic_quotes($_GET);

    _remove_magic_quotes($_POST);

    _remove_magic_quotes($_COOKIE);

}


return true;

?>


查看完整回答
反对 2019-12-06

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信