繁体   English   中英

从未登录的访问者保护我的框架的最佳技术是什么?

[英]What's the best technique to protect my framework from visitors who are not logged in?

首先,我想说我使用搜索框寻找类似的问题并且没有成功,可能是因为我的英语能力差。

我有一个'自制的'框架。 我有一些必须仅对管理员可见的PHP文件。 我目前这样做的方法是在每个页面内检查以查看会话是否已打开。 如果没有,则用户被重定向到404页面,看起来好像已经请求的文件不存在。

我真的不知道这是否可以保证工作,或者是否有更好更安全的方式,因为我目前正处理一些永远不会公开的机密数据。

你能给我一些提示吗? 或者留下我能找到的链接?

非常感谢,再次请原谅我踢字典。

编辑

我通常在每个文件的顶部写的是这样的

<?php
include("sesion.php");
$rs=comprueba(); //'check'

if ($rs) { 
?> 

然后,最后

<?php 
}
else { header("Location: err404.html"); }
?>

这是一个如此划职的工作,不是吗?

编辑

假设我在名为customers.php的文件中有一个客户列表

该文件当前可能位于http://www.mydomain.com/admin/customers.php ,并且只有admin用户才能看到该文件。 管理员用户登录后,我创建了一个会话变量。 该变量是我在每个页面顶部检查的变量,如果存在,则显示客户列表。 如果没有,则用户被重定向到404页面。

感谢您的耐心等待。 我真的很感激。

抱歉,如果我在解释你的问题时不正确,但我认为你要问最好的方法来保护框架中使用的个人PHP页面,以及输入URL的人们查看它们?

如果是这样,我发现的最佳路径是在主文件中声明一个常量(通常是index.php)。

<?php
define( '_MYAPP', 1 );

然后,在每个PHP文件的顶部( 您定义类之前 )put -

<?php
defined( '_MYAPP' ) or die( 'No access.' );

我强烈建议你使用会话。

现在,我认为有两种方法可以做到这一点。

我能想到的最简单的方法是:创建一个session.php文件,并在应用程序的每个文件中包含/要求它。

在此session.php中,对用户成功登录时可以定义的安全令牌进行会话检查(最好是加密的盐渍字符串)。

编辑:我在session.php文件中做的是die(); 或使用header()重定向; 如果没有检测到正确的会话。

如果需要,可以添加一组“公共”文件,以便在当前正在执行其中一个文件时跳过会话检查。

另一种更难的方法(仍使用会话和令牌验证)将创建一个调度程序文件,该文件检查会话,然后将请求重定向到呈现所请求操作的视图。

如果安全性在您的应用程序中至关重要,您应该阅读本指南: PHP安全指南: php安全联盟概述

<?php
$logged_in = 'no';
include("session.php"); // changes $logged_in to yes if logged in

if($logged_in == 'no'){
header("Location: login.php?error=notloggedin");
exit;
}
?>

您可以将它放在所有页面的顶部,或者只是将它放在session.php文件中,或者将header.php文件包含在所有页面中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM