【问题标题】:Error 404 page in html with report function带有报告功能的 html 中的错误 404 页面
【发布时间】:2017-05-20 20:05:42
【问题描述】:

我一直在尝试让错误页面 (404) 正常工作,嗯,它确实有效,但我无法让它报告用户尝试访问的文件。

在脚本中我调用 REQUEST_URI

$requri = getenv ("REQUEST_URI"); 我也试过 $requri = ($_SERVER['REQUEST_URI']);

他们似乎都报“404.php”,这是错误页面本身,而不是他们写的错误地址..

我不知道为什么它认为错误页面是请求的页面...... 除非 .htaccess 命令; 错误文档 404 https://mydomain.se/404.php 有问题,但我认为不是。

【问题讨论】:

  • 哪个框架,一些代码?
  • 可能会重定向到 404.php 页面。试试$_SERVER['HTTP_REFERER']
  • 框架?我对此很陌生

标签: php .htaccess


【解决方案1】:

确实,您想使用$_SERVER["REDIRECT_URI"]。 我只是查了一下,有时我会用htmlspecialchars(strip_tags(stripslashes($_SERVER["REQUEST_URI"])))

但请注意,我建议您使用 ErrorDocument 404 /404.php(本地而不是完整的 url)进行重定向(或者甚至对多个状态代码(例如 401 和 403)使用单个 /error.php 并评估 $_SERVER["REDIRECT_STATUS"]

【讨论】:

  • 这个工作正常,分类 l 如果您编写完整路径 (myserver.com/404.php),服务器显然会将错误 404 php 文件的调用作为 Uri,但按照 Hagen von 的建议在本地调用Eitzen (/404.php) 工作!
【解决方案2】:

您应该 (1) 使用路由器在应用程序中处理 404,或者 (2) 使用 RewriteRule,而不是使用 ErrorDocument,如 this post 所示。

完成上述操作后,$_SERVER['REQUEST_URI'] 确实就是您想要的。但是您应该永远以原始形式回显它。它很容易包含XSS 攻击。相反,假设您只是在屏幕上显示它(而不是在 HTML 标记或其他东西的参数中),您将使用htmlentities(),如

echo htmlentities($_SERVER['REQUEST_URI']);

【讨论】:

  • xss 不是问题(我认为),我实际上对这一切都很陌生,但我基本上希望系统发送一封包含错误信息的邮件..跨度>
  • @JoBe XSS 绝对个问题;它是最流行的攻击媒介之一。通常,您应该从不信任任何类型的用户输入,并且请求的 URL 绝对是用户输入。
  • 好吧,我不是想声称 xxs 不是问题,我什至不知道它是什么,但不管它是什么,它肯定不会与发送的 php 混淆通过邮件给我的字符串?
  • @JoBe 这肯定会导致问题。 XSS 在电子邮件中的问题不如在网页中的问题,但这并不意味着您可以忽略它。还有其他类型的注入可以在电子邮件上下文中使用。同样,规则始终是将数据视为危险数据,即使您不知道如何将其用于攻击。
  • 好的,我没听说过,我想我需要查一下,谢谢提示。
猜你喜欢
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
  • 2012-10-31
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多