Html 净化的最佳设置

发布于 2024-10-19 05:00:31 字数 1333 浏览 4 评论 0 原文

我想在文本框上使用 基于 PHP 的工具 HTML Purifier 来防止 xss,但我希望允许以下内容:

  1. 基本标签,例如
  2. 链接
  3. 图像

我想要的 阻止所有 CSS 和 JavaScript。我刚刚尝试了 HTML Purifier,但在这种情况下失败了。只需查看 此示例。我该如何处理这个问题?

另外,我希望将 #abcd@abcd 形式的所有单词替换为自定义 html (正如您猜到的那样,它是一个链接)。这可以吗还是我必须自己更换?

I would like to use PHP-based tool HTML Purifier on a textbox to prevent xss but I would like to allow the following:

  1. basic tags like <b>,<i>,<u>
  2. links
  3. images

I would like to block all CSS and JavaScript. I just tried HTML Purifier and it failed on this case. Just see this example. How can I take care of this?

Also I would want all words of the form #abcd and @abcd to be replaced with custom html (as you would have guessed it a link). Is it possible with this or do I have to do my own replace?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

暖心男生 2024-10-26 05:00:32

将 HTML.Allowed 设置为 b,i,u,a[href],img[src|alt]

参见 此处

Set HTML.Allowed to something like b,i,u,a[href],img[src|alt]

See here.

柠北森屋 2024-10-26 05:00:32

正则表达式和 e 修饰符

function checkTag( $tag ) {
  $tag = removeslashes( $tag );

  ...

  return $secureTag;
}

$html = preg_replace( "/<[^>]+>/e", " checkTag( '\$0' )", $input );

Regular expressions and e modifier

function checkTag( $tag ) {
  $tag = removeslashes( $tag );

  ...

  return $secureTag;
}

$html = preg_replace( "/<[^>]+>/e", " checkTag( '\$0' )", $input );

一江春梦 2024-10-26 05:00:32

PHP 有一个内置函数,似乎可以完全满足您的要求。

http://php.net/manual/en/function.strip-tags.php

它甚至具有白名单功能,因此可以允许某些标签。

对于 #abcd@abcd 部分,我认为您必须使用 preg_replace() 。我使用过类似的函数,它很好地完成了 @abcd 部分:)。

$sClickText = preg_replace("/\@([a-zA-Z0-9_])+/",' <a href="#reply" onClick="reply(\'' . "$0" . '\')">' . "$0" . '</a>',$sInputText);

PHP has a built-in function that seems to do exactly what you want.

http://php.net/manual/en/function.strip-tags.php

It even has a whitelist feature so it can allow some tags.

For the #abcd and the @abcd part I think you will have to use a preg_replace() for that. I have used a similar function and it does the @abcd part very well :).

$sClickText = preg_replace("/\@([a-zA-Z0-9_])+/",' <a href="#reply" onClick="reply(\'' . "$0" . '\')">' . "$0" . '</a>',$sInputText);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文