【问题标题】:Sanitize POST content with HTML contents使用 HTML 内容清理 POST 内容
【发布时间】:2015-03-18 22:05:02
【问题描述】:

我想通过 POST 发送 HTML 内容。 但是在获取它并对其进行清理时,它也会清除 HTML 字符。

$Code = filter_var_array($value, FILTER_SANITIZE_STRING);

当我发送时:

I would like to <strong>Save this data</strong>

我收到:

I would like to Save this data

我应该改变什么来创建一个安全的字符串?

编辑: 在我的表单中,我有一个所见即所得的编辑器(FCK 编辑器),它的内容就是我所追求的。

【问题讨论】:

  • 也许你可以用 BBCode 代替?
  • 你想防御什么? SQL 注入和跨站点脚本是非常不同的问题,但都涉及用户输入,并且可以通过丢弃输入中的数据块(正如您目前正在做的那样)来处理(很差)。他们在这个网站上也有很好的问题。您可能还想防御其他一些事情,但它们不太通用,更多地取决于上下文。
  • htmlspecialchars() ?
  • @AmitThakur — 将 HTML 呈现为文本而不是强元素。

标签: php html fetch sanitize


【解决方案1】:

我使用了HTMLPurifier,这是一个 PHP 过滤器库来清理 HTML 输入。

基本用法是这样的;

include_once('/htmlpurifier/library/HTMLpurifier.auto.php');
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean['htmlData'] = $purifier->purify($_POST['htmlData']); 

【讨论】:

  • 这可能是因为您已经在异地链接而没有在此处留下解释。链接必然会及时更改/消失,让您的答案在未来毫无帮助。
  • 对不起,我没有投反对票!但你的回答更像是评论!
  • 这是正确答案。应该使用 HTML 净化库;编写自己的将非常困难。我个人使用 HTML Purifier,但许多其他工具可以在初始客户端和服务器端使用(始终在服务器端进行净化;永远不要相信来自用户的数据!)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 2015-12-24
  • 1970-01-01
  • 2014-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多