阻止HTML和Javascript在我的网站上显示

时间:2012-12-01 10:39:02

标签: php javascript html css blocking

我正在开发这个新的社交网站。其中一个功能就是发布。您可以发布到Facebook和我的网站,或Twitter和我的网站。话虽这么说,我忍不住尝试发布HTML,因为我正在测试sql注入。当我这样做时,我注意到有哪些方法来操纵网站,例如,使用一个元素来完全搞砸CSS设计,或者使用javascript将用户重定向到另一个网站。话虽这么说,我想让我的网站成为我的用户安全的环境......不是用于分发计算机病毒,色情内容以及其他可能使某人倾向于不在我网站上的网站。当我搜索这个主题时,我找到了在将$ post变量提交到数据库之前将其“删除”的信息。但是,我只想制作它,这样你就可以发布任何文本,包括HTML和Javascript,而不需要浏览器将其解释为“运行此...”代码:我想将其显示为平面文本。我在Facebook上看过它,当我查看帖子的源代码时,它显示了&lt;,/和&gt;作为常规文本。我尝试“剖析”Facebook的源代码,但一无所获。我尝试使用<pre><code>之类的标签,但由于缺乏样式和控制它们的能力,我放弃了并回到了允许HTML。如果有人知道怎么做,请帮助我。

提前致谢,

TP

4 个答案:

答案 0 :(得分:3)

有一个“逃避”html special characters的功能。这将改变

<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 ...)。

顺便说一下,这篇帖子中的文字会发生这种情况。这可能是最好的。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

来做

Regular expression for parsing links from a webpage?

php regular expressions resources

答案 3 :(得分:1)

显示&lt;和&gt;等作为文本,使用

$output = htmlentities($string, ENT_QUOTES);

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

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