- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经升级到 PHP5.5 并且在 PHP.ini 现在 short_open_tag=off
我认识到了这一点,因为有些文件现在没有运行,因为 <?
而不是 <?php
.
现在有两种解决方案可以搜索任何 php 文件并将打开标签更改为 <?php
或激活 short_open_tag=on
第二个选项有什么安全问题吗?
最佳答案
不是直接的安全漏洞,但在适当的条件下可能会成为一个漏洞。
首先让我们规范标准。在 PHP 5.4 及更高版本中 short_open_tag=on
指令适用于所有短标签,除了 <?=
- echo 标签。
由于可移植性,通常认为在整个代码中使用短标签是一种不好的做法。我个人现在确实使用短标签。
自 PHP 5.4 和 >= 5.4 起,短回显标签 <?=
始终可用且不受 short_open_tag
的影响ini 指令。我认为将 echo 标签与其他标签分开的决定是一个很好的决定。
其实PSR Standards建议这个。所以:
PSR-1建议只使用 <?php ?>
或 <?= ?>
(echo 短标签) - 没有其他变化 , 和 PSR-2建议不要关闭 PHP-only 文件中的标签。这可能看起来很奇怪,但有时由于在开始之前或结束括号之后的单个空格 (' ') 字符,您的代码中可能会出现无法追踪的错误。这是一个众所周知的问题。我坚持这两种做法,因为我看到这一切都因为旧项目中使用不同的标签而出错。
这一切是从哪里开始的?
早在 PHP 的早期,人们就开始意识到 PHP 标签与 XML 和 ASP 的标签冲突。是的,您可以使用 <% //code here %>
作为打开/关闭标签。
然后决定 PHP 将使用 <?php ?>
以区别于 XML 和 ASP - 一种 PHP 代码的顶级命名空间。
实际上,引入 ASP 标签是为了方便 ASP 开发人员采用 PHP。
ASP 标签由 asp_tags
处理ini 指令,它们应该关闭。
再次 - 举行了关于短标签的辩论,这就是为什么现在短标签和短 echo 标签之间存在分离。我认为这是一件好事。只需替换旧代码中的所有短标签。
关于安全 .
您应该担心的唯一情况是当您有一些用户输入以某种方式最终通过 PHP 解释器时。您将需要剥离:
<script language="php"></script>
的东西<script language="php"></script>
- 非常重要,因为它今天没有被使用(没有它我们会更好)但据我所知,PHP 解释器仍然支持它。因此,该 HTML 脚本标记之间的任何内容都将被解释为 PHP。
All this is very well explained here .
$smth = 'rpub "lbh ner nggnpxrq naq lbhe jrofvgr unf orra gnxra bire";';
eval(str_rot13($smth));
eval()
将收到
echo "you are attacked and your website has been taken over"
.
chr()
的自定义函数或
ord()
或任何其他字符串操作函数。
eval()
执行。您应该可以通过
disable_functions
ini directive 做到这一点。 .当然要解析你的代码!但也要禁用
eval()
.
diff
它与存储库中的最新版本或与某些源备份进行比较(再次通过 diff
)。 <?=
关于PHP 5.5 short_open_tag=on 安全漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22554753/
我最近在我的电脑上安装了 Win8。然后我用 php 5.4 安装了 wamp 2.2,但我无法使短标签工作。 我已经放了: "short_open_tag = On" 进入 php.ini 文件,我
这个问题在这里已经有了答案: How to enable PHP short tags? (21 个回答) 去年关闭。 由于未知原因,我的 PHP 网站无法解析 PHP 短打开标签 例如
我将一个 javascript 语法荧光笔嵌入到读取源文件并将其回显的 PHP 脚本中。 js 荧光笔在一行中有这个字符串: ... [z,/^[^]+/], 最佳答案 'short_open_tag
我已经升级到 PHP5.5 并且在 PHP.ini 现在 short_open_tag=off我认识到了这一点,因为有些文件现在没有运行,因为 = 5.4 起,短回显标签 或 (echo 短标签)
在全新安装运行 PHP 7.2.14 的 Fedora 28 时,我遇到了一个奇怪的问题,即主 php.ini 中的 short_open_tag = On 被忽略了。我已验证只有主 php.ini
我目前使用的是 PHP 5.3.8,我无法使用 php.ini 访问它. 我绝对必须在上面启用 PHP 指令“short_open_tag”,因为我使用的是一个很棒的 CMS,它只使用 . 我尝试使
我是一名优秀的程序员,十分优秀!