[转]WordPress中的wp_kses函数相关信息

[转]WordPress中的wp_kses函数相关信息 1Php
这篇文章约6分阅读完。

许多读者经常问一个问题:在HTML中使用数据之前如何转义数据?如果同样的事情也困扰着您,那么您来对地方了。您可以使用WordPress wp_kses验证数据!

您是写HTML / CSS / JS的WordPress开发人员,则应该非常警惕网站安全。因为这是保护您的网站免遭黑客,垃圾邮件发送者等的重要因素之一,所以您需要防止它们将恶意代码注入数据库。您一定已经听说过数据转义。它有助于在为最终用户呈现数据之前保护您的数据。它还可以防止跨站点脚本(XSS)。WordPress提供了内置功能来自动停止此类事件。但是,如果您需要以特定方式转义输出,则WordPress中的wp_kses函数将派上用场。它将使您可以控制允许的内容和不允许的内容。在此处,Templatetoaster WordPress主题生成器和WordPress网站构建器,让我们找到WordPress中的wp_kses函数。

WordPress中的wp_kses函数是什么?

WordPress Wp_kses是一种HTML过滤机制。它代表KSES Strips Evil Scripts。它仅允许安全内容并剥离其余标签。安全标记保存在称为$ allowedtags的WP全局变量中。Wp_kses函数可确保仅指定的HTML元素名称,属性名称和值(包括合理的HTML实体)将出现在输出中。这意味着KSES会在调用之前过滤输入内容以从PHP引号中删除斜杠。

它具有示例结构,例如

wp_kses( string $custom_content, array $allowed_HTML, array $allowed_protocols = array() )

它需要三个参数,如下所示

1. $ Custom_content –第一个参数是源字符串。这意味着您将首先将内容传递给过滤器。您可以从用户或数据库获取此字符串。如果要处理它,则将其传递给函数。

2. $ allowed_HTML –它是允许的HTML标签和属性的数组。因此,wp_kses将允许的HTML元素列表作为第二个参数。您可以看到以下allowed_html_tags数组的示例

allowed_html = array(
'a' => array(
'href' => array(),
'title' => array()
),
'br' => array(),
'em' => array(),
'strong' => array(),
);

变量包含标签数组。每个标签都包含一个允许的参数数组。要指定没有允许参数的标签,将使用一个空数组。

3. $ allowed_protocols –此参数用于传递允许的协议。这是可选的。您可以指定是否要接受HTTP,HTTPS,FTP并忽略TelNet,JavaScript等。

此函数仅使用允许的HTML元素返回过滤的内容。

wp_kses的目的是什么?

WordPress wp_kses通常发音为wp-kisses。它用于清理数据和过滤恶意输入。这是一种定制解决方案,可以决定接受什么和拒绝什么。

wp_kses函数使您可以识别和定义所需的内容,并剥离其余所有内容。如果出现任何问题,它将为您提供一个开始调试的点。它用作检查输入并在输出时进行转义的检查点。

WordPress wp_kses函数的变体

指定每个允许的标签和属性确实很困难。因此,WordPress提供了功能变体,允许您将wp_kses与预先设置的允许标签和协议一起使用。主要用于验证帖子和评论以仅打印列入白名单的内容。这两个功能如下

  • wp_kses_post()

此功能用于清除带有允许用于帖子内容的HTML元素的输入。这里的发布内容是指“发布”类型的页面内容,而不是表单的$ _POST数据。

<?php wp_kses_post( $data ); ?>

它以发布内容为参数,并返回包含允许元素的过滤内容。

  • wp_kses_allowed_html()

此功能用于查看当前内容允许的HTML元素。它通过使用wp_kses_allowed_html钩子起作用,该钩子提供了一种简单的方法来更改允许的HTML。

<?php $allowed_tags = wp_kses_allowed_html( $context ); ?>

它获取要为其检索标签的内容。允许的值是发布,删除,数据,实体或字段过滤器的名称。它将返回给定输入的允许HTML标记列表。返回值是一个以标签名称为键的多维数组。它生成一个属性数组作为值。

如何使用wp_kses?

到现在为止,您已经熟悉WordPress wp_kses函数。但是最主要的是它如何工作的?为了澄清这一点,这是一个示例。假设您通过使用不同的HTML标记(例如“ strong”,“ Title”,“ br”,“ p”,“ anchor”标记)显示一个简单的字符串。

<?php
$str = '<title>Check Kses function</title> I am <strong>stronger</strong> and cooler every single day <a href="#">Click Here</a>.<p>I am stronger and cooler every single day.I am stronger and cooler every single day.I am stronger and cooler every single day.I am stronger and cooler every single day.I am stronger and cooler every single day</p>';
echo $str;

当您使用echo将其显示时,它将给出如下所示的结果。

现在,使用wp_kses函数显示相同的字符串。仅允许使用“ strong”,“ p”,“ br”标签。

$arr = array('br' => array(), 'p' => array(), 'strong' => array());
echo'<br>String using wp_kses function....<br>'.wp_kses($str,$arr);
?>

它将显示结果字符串,如输出屏幕的第二段所示。它仅反映wp_kses函数中定义的允许的标记strong,br,p,并且删除了定位标记。因此,没有用于单击此处的链接的文本形成。同样,也不允许任何标题分配为“ Title”标签。

wp_kses函数的输出屏幕WordPress wp_kses

Wp_kses vs strip_tags

PHP strip_tags从字符串中删除HTML和PHP标签。它有两个参数–第一个是要过滤的字符串,第二个是允许标签的字符串。

string strip_tags ( string $str [, string $allowable_tags ] )

要求剥离后返回字符串。它还清除“ script”和“ style”标签的内容。但是这里wp_kses具有明显的优势。它会剥离字符串,但不会删除给定标签的内容。

其次,PHP strip_tags可以完全破坏结果。例如,小于号是潜在HTML标签的开头字符。但是,如果未将其传递到strip_tags()函数的第二个参数中,则将不会呈现,而WordPress wp_kses()有效地呈现了HTML。

最后的话

WordPress wp_kses函数比PHP中的strip_tags更安全。Wp_kses可以抵抗JavaScript攻击,而strip_tags可以中断。WordPress wp_kses通过拒绝它来帮助防止javascript攻击。由于默认情况下,wp_kses函数中未将Javascript作为允许的协议传递。希望您也不会包括在内。因此,它以无害的纯文本形式输出javascript,而不是执行javascript alert。因此,wp_kses是更有效地验证和清理数据的明智选择。

 

by link: artcle

评论

复制标题和 URL