PHP数据库-不希望显示javascript代码

PHP databases - don't want to show javascript code

本文关键字:显示 javascript 代码 希望 数据库 PHP      更新时间:2023-09-26

我对PHP和JavaScript/CSS有问题。

我有数据库表。这张表有物品的说明。我想从数据库中复制文章的描述。不幸的是,其中许多都包含JavaScript或CSS(然后是一些文章文本),所以当我使用echo时,它会显示所有代码(以及该文本之后)。有没有办法不显示JavaScript/CSS部分,只显示文本?例如使用str_replace和正则表达式?如果有,谁能告诉我应该是什么样子?

谢谢你的帮助,如果你需要更多的信息(代码等)请告诉我

使用HTMLPurifier -它会从你的文章中删除脚本,css和任何有害的内容。由于这是一个cpu密集型操作,因此最好在将文章保存到数据库之前通过HTMLPurifer运行文章,然后在每次显示文章时运行它。

如果您试图从用户的帖子中删除标签,您可以调用strip_tags。这将摆脱css链接,脚本标签等。它不会摆脱style属性,但如果你摆脱了div, span, p等,那就没关系了——它将没有标签驻留。

正如其他人所说的那样,通常最好对输入(来自用户的数据在进入DB之前)进行消毒,而不是对输出进行消毒。

如果你只是想对用户隐藏JS和CSS,你可以使用Packer对不太懂行的用户混淆Javascript,使用Packer和base 62编码。JS仍然可以工作,但看起来像jiberish。请注意,更有知识的用户可以尝试消除代码的混淆,因此JS中的任何关键安全风险仍然存在。不要认为任何直接访问数据库的JS都是安全的;相反,为了安全起见,从Javascript中删除数据库访问。如果JS只是做一些花哨的事情,比如在页面上移动元素,那么可能只是混淆它是可以的。

只有当你完全控制和了解文章中包含的所有JS时才考虑这样做。如果这是你的匿名或其他不受120%信任的用户可以上传的东西,你需要杀死该功能并使用HTML净化器删除他们可能添加的任何JS。对于你或你的用户来说,输出用户输入的JS是不安全的。

对于CSS,我不确定你为什么要隐藏它,CSS不能像JS那样混淆;样式仍然是简单的英语,你能做的最好的是删除类/id名称和空白;输出你生成的CSS并不存在真正的安全风险,即使有人对它进行逆向工程,我也不会那么害怕。

同样,如果这是匿名/不受信任的用户可以自己添加到您的网站上的东西,那么您根本不希望这样做,所以使用HTML净化器删除上载CSS的能力。

您可以尝试下面的正则表达式来删除脚本和css:

"<script['d'D]*?>['d'D]*?</script>"
"<style['d'D]*?>['d'D]*?</style>"

它应该有帮助,但它不能删除所有的脚本。如onclick = " javascript:警报(1)"。