我遇到PHP和JavaScript / CSS问题。
我有数据库和表。该表有文章的描述。我想回应数据库中文章的描述。不幸的是,其中许多都包含JavaScript或CSS(然后是一些文章文本),因此当我使用echo时,它会显示所有代码(以及之后的文本)。有没有办法不显示JavaScript / CSS部分并只显示文本?例如使用str_replace和正则表达式?如果是的话,有人能告诉我它应该是什么样的吗?
感谢您的帮助,如果您需要更多信息(代码等),请告诉我们。
答案 0 :(得分:5)
使用HTMLPurifier - 它会删除文章中的脚本,CSS和任何有害内容。由于它是CPU密集型操作,因此最好在保存到数据库之前通过HTMLPurifer运行文章,然后在每次显示文章时运行它。
答案 1 :(得分:4)
如果您尝试从用户的帖子中删除标记,则可以致电strip_tags
。这将摆脱CSS链接,脚本标签等。它不会摆脱style
属性,但如果你摆脱div
,span
,p
等等无关紧要 - 没有标记可以驻留。
正如其他人所说,通常最好清理输入(用户进入数据库之前的数据),而不是清理输出
答案 2 :(得分:2)
如果您只是想从用户那里隐藏JS和CSS,您可以使用Packer来消除不太精通的用户的Javascript,使用Packer并使用base 62编码。 JS仍然可以工作,但看起来像是jiberish。请注意,知识渊博的用户可以尝试取消隐藏代码,因此JS中的任何重要安全风险仍然存在。不要以为任何直接访问数据库的JS都是安全的;而是从Javascript中删除数据库访问以确保安全性。如果JS只是做一些奇特的事情,比如在页面周围移动元素,可能只是对它进行模糊处理。
如果您完全控制并了解文章中包含的所有JS,则只考虑这一点。如果这是您的无谓或不是120%可信用户可以上传的内容,您需要终止该功能并使用HTML Purifier删除他们可能添加的任何JS。为您或您的用户输出用户输入的JS是不安全的。
对于CSS,我不确定你为什么要隐藏它,并且CSS不能像JS那样被混淆;风格仍然是简单的英文,你可以做的最好的是屠杀类/ id名称和空格;输出您生成的CSS并不是真正的安全风险,即使人们对其进行逆向工程,我也不会那么害怕。
同样,如果这是匿名/非信任用户可以自己添加到您的网站,您根本不需要这样,所以删除使用HTML Purifier Darhazer提到的文章上传CSS的功能。 / p>
答案 3 :(得分:0)
您可以尝试使用以下正则表达式删除脚本和css:
"<script[\d\D]*?>[\d\D]*?</script>"
"<style[\d\D]*?>[\d\D]*?</style>"
它应该有帮助,但它无法删除所有脚本。喜欢onclick =“javascript:alert(1)”。