【问题标题】:Showing plain PHP code in a HTML page在 HTML 页面中显示纯 PHP 代码
【发布时间】:2010-08-20 10:09:45
【问题描述】:

我在这里谈论(特别是)论坛 - [PHP]代码在这里[/PHP] - 风格。一些论坛会转义双引号或其他“危险字符”,而另一些则不会。

最好的方法是什么?你们都在用什么? 能做到不用担心代码注入吗?

编辑:谁说过要重新发明轮子?

【问题讨论】:

  • Stack Overflow 尤其允许您使用 <>"(可能还有其他 HTML 实体)。使用这些,看看它们是否在其他论坛上有效。

标签: php html plaintext


【解决方案1】:

当 PHP echoprint 文本时,它永远不会执行它。这只发生在eval 上。这意味着如果您这样做:

echo '<?php ... ?>';

它将一直传递到页面输出而不被解析或执行。

这意味着您需要做的就是转义常用字符(&lt;&gt;&amp; 等),您通常应该是安全的。

【讨论】:

    【解决方案2】:

    不要重新发明轮子。我在你的问题中看到了 BBCode。抓住一个降价库并使用它。所以使用这个:http://daringfireball.net/projects/markdown/

    【讨论】:

      【解决方案3】:
      1. 无需担心 PHP 代码注入(除非您正在做一些不寻常的事情,例如评估 HTML 模板),但始终担心 JS 代码注入,通常称为 XSS。所有的危险都来自可能的 JS 代码。
      2. 因此,对显示在 HTML 页面上的 PHP 代码没有特殊处理。只需将其视为任何其他数据。 &lt; &gt; 括号通常被转义,原因很明显。
      3. 不要重新发明轮子。 PHP 有它的 highlight_string 函数

      【讨论】:

        【解决方案4】:

        如果您在某些页面上看到转义引号,这很可能是因为他们的脚本两次转义了它们(例如,magic_quotes 做了一次,然后 mysql_query() 又做了一次)。正确完成数据清理后,您不应在输出中看到转义字符。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-27
          • 1970-01-01
          • 1970-01-01
          • 2019-07-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多