WordPress中的wp_magic_quotes()方法会给$_REQUEST、$_GET、$_POS、$_COOKIET、$_SERVER增加转义反斜线

原创 野人  2023-06-25 00:21  阅读 15 次

正如标题的所说,今天在完善插件的代码的时候,踩的最大的一个坑。

而且wp_magic_quotes()这个方法官方并没有相关的hook钩子去取消,难受的一b,该方法就在根目录的wp-settings.php文件中。

怎么说,该方法有好有坏把,打个例子,原生的$_REQUEST获取到是"a",用了该方法后\"a\",也就是增加了转义反斜线,但是官方也是出于安全考虑,反正对于我来说有点鸡肋的,所以只能动手去删除掉,但是又不能去动官方的核心文件,免了一升级就没有了。

所以就动手写了个方法,恢复了原貌,代码如下。

add_action('init', 'Yr_Remove_Wp_Extra_Add_Slashes');
/**
 * 该方法就是去除那些强制加的转义字符
 * wordpress会强制给$_GET`, `$_POST`, `$_COOKIE`, and `$_SERVER添加转义字符,具体实现细节在wp-settings.php/wp_magic_quotes();
 */
function Yr_Remove_Wp_Extra_Add_Slashes()
{
    function _stripslashes(&$var)
    {
        if (is_array($var)) {
            foreach ($var as $k => &$v) {
                _stripslashes($v);
            }
        } else {
            $var = stripslashes($var);
        }
    }
    _stripslashes($_GET);
    _stripslashes($_POST);
    _stripslashes($_COOKIE);
    _stripslashes($_REQUEST);
}

将该代码放到当前所使用的主题下function.php中,即可。

本文地址:https://www.yerenwz.com/19120.html
版权声明:本文为原创文章,版权归 野人 所有,欢迎分享本文,转载请保留出处!

发表评论