php将php回显到浏览器,未显示,安全问题?

php将php回显到浏览器,未显示,安全问题?,php,html,browser,echo,Php,Html,Browser,Echo,如果我使用以下命令会发生什么 <?php echo "<?php echo date('Y'); ?>"; ?> 我在任何地方都找不到答案,当我自己尝试时,我得到: <?php echo date('Y'); ?></td></tr></table> 但是,它不会显示在前端浏览器上,只显示源代码 所以我的问题是,这会以任何方式影响html/浏览器/服务器吗? 因为我不想最终创建一个安全问题,用户应该发布他们的 拥有纯ht

如果我使用以下命令会发生什么

<?php echo "<?php echo date('Y'); ?>"; ?>
我在任何地方都找不到答案,当我自己尝试时,我得到:

<?php echo date('Y'); ?></td></tr></table>
但是,它不会显示在前端浏览器上,只显示源代码

所以我的问题是,这会以任何方式影响html/浏览器/服务器吗? 因为我不想最终创建一个安全问题,用户应该发布他们的
拥有纯html格式的php代码,如生物页面等。

这是因为V形符号,因为浏览器将其解释为标记

有两种方法可以避免这种情况

或者将代码用于特殊字符,因此您可以执行以下操作:

<?php echo "&#60;?php echo date('Y'); ?&#62;"; ?>

有关htmlspecialchars函数的更多信息,请访问

这不是一个安全问题,不会对浏览器或服务器产生任何影响,至少不会因为PHP代码。即使字符串包含PHP代码,它也只会被发送到不会尝试执行它的客户端

回显用户定义的HTML时的真正问题是XSS等攻击的风险。用户可以包含任意脚本或图像,或者通过插入任意标记来扰乱页面的其余部分。换句话说:用户可以用一行HTML修改整个页面


一般来说,允许这种任意输入是一种不好的做法。看看哪一个提供了非常基本的保护级别。

它只是您发送的一个字符串。只要这个字符串不包含您的db凭证之类的内容,一切都会很好。您可以将字符串包装在pre:中,以便它显示在页面中。如果我们使用的是ckeditor,那么它确实附带了html标记。这些函数实际上也将剥离所有html标记,我们希望将其放入其中。也许如果我使用preg_replace with//i,我可以删除不需要的标记。我还使用了Htmlenties和html_entity_decode,所以它也会解码php标记。strip_标记会将这是我的个人简历转换为H1thismybioh1。@user3014330否,请看下面的示例1。
<?php echo htmlspecialchars("<?php echo 'hi'; ?>"); ?>