清理插入 WordPress MySQL 数据库的 URL
Sanitizing URLs being inserted into a WordPress MySQL database
我正在为 Wordpress 编写一个插件,其中我有自己的自定义 table 来存储从远程 API 提取的相关数据。我需要存储的元素之一是 URL,它是我数据库中的一个文本字段。
因为我看到很多评论说不要在 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;
}
通常您只需在数据库中按原样插入一个 URL 并且在呈现它时只关心安全问题。当然,这假设您正在正确地做事,就像您在这里明确调用 insert
函数并将数据作为关联数组发送一样。
真正的风险是当人们绕过 WPDB 并直接插入内容时,通常使用字符串连接会很糟糕。
您应该在显示这些值时调用esc_url
。由于您可能会不时更改允许 URL 的内容,限制它们或根据需要的变化打开它们,因此最好将它们保留在数据库中并根据具体情况准备好显示.
我正在为 Wordpress 编写一个插件,其中我有自己的自定义 table 来存储从远程 API 提取的相关数据。我需要存储的元素之一是 URL,它是我数据库中的一个文本字段。
因为我看到很多评论说不要在 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;
}
通常您只需在数据库中按原样插入一个 URL 并且在呈现它时只关心安全问题。当然,这假设您正在正确地做事,就像您在这里明确调用 insert
函数并将数据作为关联数组发送一样。
真正的风险是当人们绕过 WPDB 并直接插入内容时,通常使用字符串连接会很糟糕。
您应该在显示这些值时调用esc_url
。由于您可能会不时更改允许 URL 的内容,限制它们或根据需要的变化打开它们,因此最好将它们保留在数据库中并根据具体情况准备好显示.