2012-10-26 335 views
0

在我的网站上,当有人使用管理员帐户登录时,我想要启用一些选项。我的问题是关于如何尽可能保护管理员帐户。他们的方式登录是在我的网站设置是认证登录后,我这样做$_SESSION['status'] = 'authorized';然后我说这样的事情:PHP管理员帐户

<script> 
$(document).ready(function(e) { 
    if(<?php echo ($_SESSION['status'] == 'authorized'); ?>) { 
     $('#account_window').show(); 
    } 
}); 
</script> 

<div id="account_window"> 
    //account stuff 
</div> 

由于增加了主帐户,我想加入这个$_SESSION['master'] = 'authorized';,然后在中首页,我会添加此代码:

​​

但我觉得这太容易了,是一种安全的方式来验证主帐户?如果没有,那么做什么最好的方法呢?

+1

什么会阻止我在浏览器中使用inspect元素并显示这个隐藏的div?你应该**对数据库授权**而不是在会话中。 – AlexP

+0

就安全会话功能而言它是安全的,所以 - 是的。 KISS –

+0

未授权时隐藏内容是很大的安全失败,如果他们查看html代码,他们将会看到所有内容.plus会话应针对用户进行验证,例如,如果db记录属于用户A和用户B想要的可以highjack到用户A的内容并删除它们..如果你只是检查用户会话状态只。记住它只说你只是登录,但它表明你有权编辑其他人的东西.. – mahen3d

回答

5

将管理界面从“非管理员”隐藏起来可能会很诱人,但如果有人只是将正确的HTML注入页面(例如使用GreaseMonkey脚本)或手动生成请求,那么这基本上是可以绕开的。

您必须验证PHP中的每个动作才能获得任何实际的安全性。因此,您需要在PHP中提交任何表单或提交操作时检查用户是否有权访问。

+0

好吧,你是说我应该有一个'checklogin'或'checkadmin'函数,我应该调用来显示/隐藏div ? – Richard

+1

不,我要说的是你需要验证他们通过该接口所做的请求。假设他们提出发送电子邮件的请求。处理该请求的PHP脚本必须在实际执行之前检查用户是否有权发送电子邮件。 – nneonneo

+1

你甚至不应该输出不允许使用此功能的用户的HTML,因为任何人都可以轻松地检查浏览器中的HTML并显示隐藏的内容。因为用户所执行的操作无论如何都被发送到服务器,所以它更加容易并且更安全地检查那里的权限。 – dag

0

您必须验证PHP中的每个动作才能获得任何实际的安全性。因此,您需要在PHP中提交任何表单或提交操作时检查用户是否有权访问。