我正在为访问者创建一个简单的"调试"页面,以便他们能够判断他们刚刚发送到URL的数据.我在想,向访问者显示哪些默认的php变量是安全的?我已经尽了最大努力查看php文档,并亲自查看了内容,以确保不会expose 敏感信息,但我仍然觉得,有经验的人可能知道一些我可能没有考虑到的问题.

我目前的假设是:

  • $_GET、$_POST和$_REQUEST只保存访问者发送给我们的内容,这让我相信向他们显示/转储这些变量的所有内容是完全安全的.

  • $_cookie,我认为这是为访问者设置的cookie,他们的浏览器中无论如何都有cookie,因此向他们显示/转储应该是安全的

  • $_SERVER,显示所有内容并不安全,但显示它们的特定标头(如$_SERVER["HTTP_MY_SPECIAL_HEADER"])应该是安全的

  • $_SESSION,如果不是$_SESSION["IsLoggedIn"]之类的特定内容,就不应该向访问者显示...

你认为这些假设站得住脚吗,或者我在某些情况下泄露了敏感信息,让自己expose 在易受攻击的境地?我认为这将帮助许多新的php开发者避免在future 的trap ,通过了解什么是允许显示的,什么应该远离显示给访问者,谢谢!

推荐答案

这取决于你所显示的变量.

如果您只是转储$_GET$_POST的内容,那么您需要注意不要向跨站点脚本(XSS)或类似的东西敞开大门.

例如,如果我请求https://yoursite.com/page?var=<script>alert("U r haXXed");</script>,它会显示脚本的text(包括标记)还是会使此脚本成为页面的一部分?

这听起来可能不是最大的问题,但如果把钓鱼纳入方程式,那么它就会变得可怕得多.我可以向某人发送到https://yoursite.com/page?var=<script>window.location.href="https://evilsite.com/site/yoursite.com";</script>的链接,它(如果脚本被执行)会将您站点的用户重定向到evilsite.com.然后我可以提供一个看起来像你的登录页面,并窃取他们的凭据.

Php相关问答推荐

CodeIgniter AJAX表格提交中的CSRF token 再生问题

从WooCommerce Checkout Country Select2下拉列表中重新排序国家/地区

以编程方式更改新订单、已取消订单和失败订单的邮箱WooCommerce通知

WooCommerce产品按特定元数据的自定义数字排序选项

Symfony Api平台:按自定义实体方式排序结果

在WooCommerce中设置带有国家/地区和年份前缀的顺序序号

WooCommerce-在选定类别中每消费X个金额即可添加免费礼物

在Symfony 6.4中将工作流动态添加到服务

如何在laravel中使用script type= text/html/script

返回WooCommerce中的所有已启用变体

在带有livewire 3的laravel中使用规则方法时,无法进行实时验证

根据小计向 WooCommerce Checkout 添加佣金

WooCommerce:如果订单总数为零,则隐藏本地取货运输选项

WooCommerce 回购自定义插件:如何更新用户钱包?

Docker-用于部署的 PHP 应用程序映像无法在本地运行

在特征中使用类的属性

从 Laravel 机制中排除目录并直接访问该目录

PHP使用三元运算符进行null合并(再次)

转发和非转发呼叫 - 后期静态绑定

在全局安装 Composer 包后运行命令