gpt4 book ai didi

PHP 安全,代理文件是解决方案吗?

转载 作者:行者123 更新时间:2023-11-28 04:08:09 30 4
gpt4 key购买 nike

因此,如果您有一个 PHP 页面,而如果有人加载该页面,他们可能看不到服务器端运行 PHP 代码;如果他们获取源代码,文件本身仍然是公开可用的,因为如果你不公开它,该人将无法加载该页面。

因此,有人可以利用正确的知识“获取”该文件,然后阅读服务器端脚本内容。

那么做一个“代理”不是更安全吗?例如,AJAX post 调用 PHP 页面(称为脚本处理程序)并将前 2 个字符作为 id 的字符串传递给要运行的 PHP 脚本,其余字符串作为该脚本的数据,然后是脚本处理程序运行并根据数字包含并返回随后显示的回显 HTML。

大家怎么看?我已经完成了这个并且效果很好,如果我获取源代码,我得到的只是一个带有 div 容器的 HTML 页面和一个带有对脚本处理程序的 ajax 调用的 javascript 文件。

最佳答案

没有。您的“变通办法”无法解决问题(如果有的话)。

如果客户端(浏览器)向网络服务器请求“资源”(例如页面),网络服务器将不会只提供在磁盘上找到的资源。

如果你配置好你的网络服务器,它会知道

  • .html、.gif、.png、.css、.js 文件可以按原样提供。
  • 必须先执行 .php、.php5、.cgi、.pl 文件,并且必须提供结果输出

因此,使用正确配置的服务器(并且大多数体面的网络服务器默认配置正确),仅通过调用页面获取 PHP 源代码是不可能的 - 网络服务器将知道执行源代码并返回结果。

但是

编写自己的“上传/下载脚本”时最常遇到的错误之一是允许用户上传/下载 .php(或其他可执行文件)文件。如果您自己的脚本通过从磁盘读取文件并将其写入网络来“提供”.php 文件,用户将能够看到您的代码。

解决方案:

  • 除非您清楚自己在做什么,否则不要编写脚本。
  • 避免“这里没有发明”综合症(不要重新发明轮子,除非你确定你需要一个更好的轮子并且可以制造一个更好的轮子)<
  • 不要解决不存在的问题!

顺便说一句:

如果您的网络服务器配置错误并且仅将 .php 文件作为可查看/可下载文件提供,您通过 ajax 调用它的“解决方案”不会改变这一点... Ajax 仍然是客户端-side,因此任何客户端都可以绕过 ajax 并获取脚本本身。

关于PHP 安全,代理文件是解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7144459/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com