我正在开发这个新的社交网站。其中一个功能就是发布。您可以发布到Facebook和我的网站,或Twitter和我的网站。话虽这么说,我忍不住尝试发布HTML,因为我正在测试sql注入。当我这样做时,我注意到有哪些方法来操纵网站,例如,使用一个元素来完全搞砸CSS设计,或者使用javascript将用户重定向到另一个网站。话虽这么说,我想让我的网站成为我的用户安全的环境......不是用于分发计算机病毒,色情内容以及其他可能使某人倾向于不在我网站上的网站。当我搜索这个主题时,我找到了在将$ post变量提交到数据库之前将其“删除”的信息。但是,我只想制作它,这样你就可以发布任何文本,包括HTML和Javascript,而不需要浏览器将其解释为“运行此...”代码:我想将其显示为平面文本。我在Facebook上看过它,当我查看帖子的源代码时,它显示了&lt;,/和&gt;作为常规文本。我尝试“剖析”Facebook的源代码,但一无所获。我尝试使用<pre>
和<code>
之类的标签,但由于缺乏样式和控制它们的能力,我放弃了并回到了允许HTML。如果有人知道怎么做,请帮助我。
提前致谢,
TP
答案 0 :(得分:3)
有一个“逃避”html special characters的功能。这将改变
<p>Some dangerous html</p>
<script>window.location.replace('http://pornography.com');</script>
分为:
<p>Some dangerous html</p>
<script>window.location.replace('http://pornography.com');</script>
浏览器将以纯文本显示(即<p>Some ...
)。
顺便说一下,这篇帖子中的文字会发生这种情况。这可能是最好的。
答案 1 :(得分:1)
您可以使用函数strip_tags()来过滤输入。如果您看到文本已更改,则表示用户尝试输入html数据。您可以拒绝输入,也可以保留过滤后的版本。
答案 2 :(得分:1)
我想你想要的只是删除链接和JavaScript。你可以用正则表达式
来做答案 3 :(得分:1)
显示&lt;和&gt;等作为文本,使用
$output = htmlentities($string, ENT_QUOTES);
这将确保任何html代码都显示为文本而不是纯HTML。