【发布时间】:2021-02-14 21:27:27
【问题描述】:
我在不同的服务器上有两个域。来自第一台服务器的一个页面有一个 iframe 指向另一台服务器中的 url。我无法处理视野。
iFrame页面代码(main.php):
<!DOCTYPE html>
<html>
<head>
<base target="_parent">
</head>
<body>
<iframe src="http://192.168.1.10/index.php"</iframe>
</body>
</html>
我的 iFrame 页面 index.php 有一个简单的登录系统,可以启动会话。因此,有一个按钮可以加载以下代码(process.php):
<?php
session_start();
$_SESSION['valid'] = true;
$_SESSION['timeout'] = time();
header('location:catalogue.php');
?>
在我的 catalogue.php 和每个页面上,我都有以下会话代码(check.php):
<?php
session_start();
if (isset($_SERVER['HTTP_REFERER'])) {
if ($_SERVER['HTTP_REFERER'] == "") {
unset($_SESSION['valid']);
unset($_SESSION['timeout']);
header('location:index.php');
}
} else {
unset($_SESSION['valid']);
unset($_SESSION['timeout']);
header('location:index.php');
}
if (isset($_SESSION['valid'])) {
$timeout = $_SESSION['timeout'];
$time = time();
$t = $time - $timeout;
if ($t > 9000) { //15*60 = 900 Second, timeout to logout
unset($_SESSION['valid']);
unset($_SESSION['timeout']);
header('location:index.php');
} else {
$_SESSION['timeout'] = time();
}
} else {
header('location:index.php');
}
?>
所以我有以下几点:
Button press On load it check session
to log in using check.php
index.php ==============> process.php ===============> catalogue.php
我使用 iframe 是为了隐藏我的网络应用程序的真实网址和更用户友好的域名。
我的问题:
- 是每次我按下 index.php 中的按钮登录它都会将我重定向到 index.php 而不是 catalogue.php。
- 我可以在 iframe 中隐藏/屏蔽 bots/spider 中的 url。
- 欢迎任何关于更好设置的建议/想法。
** 更新 **
经过一些测试,我认为会话没有开始(check.php)。它将位于底部的else。我有公共服务器和本地服务器。
main.php 没有任何会话代码。
只有 iframe 中的页面有。
index.php 没有。如果用户按下登录以加载process.php(启动会话)并重定向到catalogue.php。
Catalogue.php 和我的应用程序的所有页面都有一个代码(check.php)用于检查会话。
【问题讨论】:
-
1您没有使用 html 5 doctype .2框架在新浏览器中已过时3如果您使用 Windows 默认情况下防火墙已打开,并且这些年来不安全的 http 将触发不同的 ips 192.168.1.10 或公共域 4即使所有这些东西都可能通过错误工作,如果在标头中接受任何帧包含,您仍然检查目标(这将是安全性的一个新问题 - 低级如果有效)。欢迎来到 2021 年;)
-
还是我!更多建议...不要使用 $_SERVER['HTTP_REFERER'] 原因可以被攻击者复制。如果您无论如何使用它,请实现一个随机系统,一个随机学习系统可能会在预期使用或不使用该 $_SERVER['HTTP_REFERER'] 时触发安全警报并检查跟踪以检测一些攻击者(人或程序,例如扫描仪)
-
@Constantin 感谢您的来信,欢迎来到 '21。我正在使用 index.php,它是拼写错误并已更正。我将公共域指向 loacl ip。本地服务器是 LAMP 设置。相同的设置但将 iframe.php 存储到同一台服务器可以工作。将 iframe.php 移动到公共服务器时不是。
-
如果直接在浏览器中调用 index.php,会话是否正常工作?
-
@RenéPöpperl 是的,如果我打电话给
http://192.168.1.10/index.php它工作正常。当然,我正在本地网络中对其进行测试。我正在尝试使用域向用户隐藏本地 url。
标签: php session cookies iframe session-cookies