清理正在插入WordPress MySQL数据库的URL

时间:2017-07-19 04:12:14

标签: php mysql wordpress sanitization mysql-real-escape-string

我正在为Wordpress编写一个插件,我有自己的自定义表来存储从远程API中提取的相关数据。我需要存储的一个元素是URL,它是我数据库中的TEXT字段。

由于我看过很多评论说不要在Wordpress插件中使用标准的mysql_mysqli_函数,我想知道在插入之前逃避URL的最佳方法是什么?是否足够使用esc_url()或者我之前还应该做些什么呢?

    case "Create":
    {
        $tag = $_POST['product_tag'];
        $name = $_POST['product_name'];
        $asin = $_POST['product_id'];

        $response = getPrice("com", $asin);

        $result = $wpdb->insert( $table_name, array(
            'tag' => $tag,
            'name' => $name,
            'asin' => $asin,
            'price' => $response['price'],
            'url' => esc_url($response['url'])
        ));

        if ($result !== FALSE)
            echo "Successfully inserted new Amazon Product.";
        else
            echo "An Error occurred.";

        break;
    }

1 个答案:

答案 0 :(得分:5)

通常,您只需在数据库中按原样插入URL,并在呈现时仅考虑安全问题。当然,这假设你正在做的事情就像你在这里你明确地调用insert函数,并将数据作为关联数组发送。

真正的风险是当人们绕过WPDB并直接插入内容时,通常使用字符串连接很糟糕。

显示这些值时,您应该致电esc_url。由于您可能会不时更改允许的URL,限制它们或在需求发生变化时将其打开,因此最好将它们保留在数据库中,并根据具体情况进行准备。