1

我正在开发这个新的社交网站。它的各种功能之一是发布。您可以发布到 Facebook 和我的网站,或 Twitter 和我的网站。话虽如此,我在测试 sql 注入时忍不住尝试发布 HTML。当我这样做时,我注意到有一些方法可以操纵网站,例如,使用一个元素来完全搞砸 CSS 设计,或者使用 javascript 将用户重定向到另一个网站。话虽如此,我想让我的网站为我的用户提供一个安全的环境……而不是一个用于传播计算机病毒、色情和其他可能使某人远离我的网站的东西的网站。当我搜索这个主题时,我找到了在将 HTML 提交到数据库之前将其从 $post 变量中“剥离”出来的方法。但是,我只想制作它,以便您可以发布任何文字,包括 HTML 和 Javascript,没有浏览器将其解释为“运行此...”代码:我想将其显示为平面文本。我在 Facebook 上看到过,当我查看帖子的源代码时,它显示 <、/ 和 > 为常规文本。我尝试“剖析”Facebook 的源代码,但一无所获。我尝试过使用诸如<pre><code>,但由于缺乏对它们进行样式设置和控制的能力,我放弃了,回到只允许 HTML 的状态。拜托,任何知道如何做到这一点的人,请帮助我。

提前致谢,

TP

4

4 回答 4

3

有一个“转义” html特殊字符的功能。这将改变

<p>Some dangerous html</p>
<script>window.location.replace('http://pornography.com');</script>

进入:

&lt;p&gt;Some dangerous html&lt;/p&gt;
&lt;script&gt;window.location.replace('http://pornography.com');&lt;/script&gt;

浏览器将显示为纯文本(即<p>Some ...)。

顺便说一句,这将发生在这篇文章中的文字上。这可能是最好的。

于 2012-12-01T10:48:09.540 回答
1

要将 < 和 > 等显示为文本,请使用

$output = htmlentities($string, ENT_QUOTES);

这将确保任何 html 代码都显示为文本而不是纯 html。

http://php.net/manual/en/function.htmlentities.php

于 2012-12-01T10:55:45.003 回答
1

我猜你想要的只是删除链接和 javascript。你可以用正则表达式来做

用于解析网页链接的正则表达式?

php正则表达式资源

于 2012-12-01T10:46:56.053 回答
1

您可以使用函数strip_tags()过滤输入。如果您看到文本已更改,则表示用户尝试输入 html 数据。您要么拒绝输入,要么保留过滤后的版本。

于 2012-12-01T10:42:21.387 回答