【问题标题】:hide php file url in html form submit在html表单提交中隐藏php文件url
【发布时间】:2011-04-13 03:50:41
【问题描述】:
<form action="/path/hello.php" name='myForm' method='post'>
<!--  onChange="ajaxFunction();"  -->
<input type= "text"  name="user" id= "txtname" /><br />
<!-- <input type="text" name="user2" id="txtname2" /> -->
<input type='submit' name = "click"  />
</form>

现在每个查看我的 html 源代码的人都会知道这个 php 文件的位置并知道如何调用它。我怎样才能阻止这种情况?

【问题讨论】:

  • 那又怎样?这种“可见性”有什么问题?
  • ZOMG...人们可以查看地址栏并了解如何访问具有此表单的页面。奔向山丘!

标签: php html


【解决方案1】:

如果您正确处理对/path/hello.php 的 POST 请求,那么是否有人手动访问它应该无关紧要。只需确保您正在检查 $_POST['click'] 的存在以及您希望存在的任何其他 POST 数据,清理它,然后照常进行。

如果有人用欺骗性的 POST 数据调用 /path/hello.php,那么这与他们提交您自己的表单有何不同?无需修改脚本的可见性。

此外,如果您担心有人能够查看您的 PHP 脚本的源代码,请不要这样做。如果用户向您的 PHP 脚本发出 HTTP 请求,他们唯一能看到的就是呈现的 HTML。

但是,即使他们可以——您为什么不希望别人看到您的源代码(当然,除非您可能在 PHP 文件中包含敏感配置数据)

【讨论】:

  • 就没有欺骗用户的方法吗?类似于在 htaccess 文件中添加 url 规则?
【解决方案2】:

你无法阻止它。如果你要告诉浏览器表单在哪里,你必须把地址放在 HTML 中的某个地方,一旦你这样做了,任何人都可以看到它.

但它确实不应该有任何区别,因为您的脚本应该能够处理发送给它的任何值。在任何情况下,您都不能盲目地信任来自客户端的数据,因此您需要验证发送的数据是否符合您的预期 - 无论是通过正常填写表单发送的数据还是有人直接调用它。

【讨论】:

  • 如果知道脚本的绝对路径,用户就不能下载吗?
  • 假设您已经正确设置了 PHP,但他们不能。他们将看到的只是 hello.php 脚本的输出(如果没有输出,则为空白页),他们看不到 PHP 源代码。尝试自己在浏览器中直接输入路径来查看。
【解决方案3】:

我可以举一个很好的例子来说明你为什么要这样做。您可能有一项服务并将其提供给第 3 方,但是为了完成这项工作,可能会暴露一些重要的可配置数据。这是一个例子

您拥有一个网站,假设您想在您的网站上创建某种类型的广告活动,但您的“客户”想在他们的网站上做同样的广告,但数据需要进入您的电子邮件数据库。

  1. 您可能不希望他们知道您使用谁
  2. 这些服务可能要求您向您的帐户添加帐号或某种类型的识别参数。

可能没什么大不了的,但仍然可能存在安全风险。因此,如果您转移或掩盖它可以防止其中一些。

【讨论】:

    【解决方案4】:

    除了停止所有动作之外,没有其他方法可以避免这种情况。然后表单将提交到当前 URL。

    无论如何,您为什么担心有人访问脚本?如果你写得正确,就不应该暴露任何信息,而且,不,他们不会知道如何“调用”它——除非调用它意味着你只是在浏览器中访问它。如果只是在浏览器中访问它,就会显示敏感信息,那么您就遇到了一些严重的问题。

    【讨论】:

      【解决方案5】:

      我认为您的问题是,通过显示这些路径,人们将能够实际查看 php 文件的源代码。这是不可能的,因为它是由您正在使用的 php 引擎呈现的。在这里你没有什么好害怕的。

      【讨论】:

        【解决方案6】:

        抱歉,这不是答案,而是对同一主题的一般观察...

        我也经历过,似乎知道 OP 是从哪里来的……

        我见过许多大型 CMS,其中表单“操作”不显示脚本......几乎就像它指向一个“友好”的 URL......

        &lt;form name="contactform" method="post" action="http://example.com/contact/send-contact"&gt;

        可以看出扩展名丢失但表单处理正确...

        我猜 htaccess 可以隐藏扩展,但有些混合了标准页面的可见 URL 和其他内容(包括表单)的一些“友好”URL。

        我不确定这些是如何工作的......

        【讨论】:

          【解决方案7】:

          有时将.php 文件保留在根目录上方被认为是最佳实践,以防止在服务器上配置错误的php 和向客户端显示php 代码的罕见情况。

          您所要做的就是创建一个代理脚本并发布到该脚本。我将操作存储在一个隐藏字段中,这样我就不需要多个代理脚本。我不能发布源代码,因为我会在另一个帖子上复制我的答案。你可以在这里找到它:https://stackoverflow.com/a/36941336/2452680

          【讨论】:

            【解决方案8】:

            您可以先对 page1 进行操作,然后在第 1 页中获取数据并重定向并将数据发布到 page2。 如果您使用的是 phpin page1,您可以使用 curl 和 options 来放置数据并执行它。

            【讨论】:

              猜你喜欢
              • 2023-03-13
              • 1970-01-01
              • 1970-01-01
              • 2013-10-02
              • 2018-05-15
              • 2012-10-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多