-2

成功登录后,用户被重定向到 menu.php,这是唯一将执行密码保护操作(活动)的文件。

如果用户需要添加新公司,我有链接

<a href="menu.php?add_new_company" title="">Add new company</a>

文件下面是代码

if ($_SERVER['QUERY_STRING'] == 'add_new_company') { echo 'Input form' }

已经读过这是不安全的,而且是糟糕的设计。但是不明白有人如何破解它。请告知哪里存在安全问题(如果有)(有人如何破解)?

更新

登录成功后,会创建token并记录在mysql中。在 menu.php 中检查 token issset,如果是,连接到 mysql,检查是否存在。如果不是 isset 或 mysql 中不存在,则重定向到登录。

4

2 回答 2

2

请注意,menu.php?action=add_new_company任何人都可以在任何地方访问,无论是否登录。menu.php您需要在页面上实际进行会话验证。

其中一部分,从您发布的内容来看,没有什么真正不安全或可以被利用的,只要该请求的输出不依赖于用户输入(否则我们会有 XSS)。

这只是一个糟糕的设计,因为这不是一个格式良好的查询字符串。查询字符串应该包含一个key=value列表,并且不应该以这种方式使用。

我会选择类似的东西:

<a href="menu.php?action=add_new_company" title="">Add new company</a>

和:

if ($_GET['action'] == 'add_new_company') { echo 'Input form' }
于 2013-03-31T09:20:59.887 回答
1

如果我理解正确,有人可以打电话menu.php?add_new_company并可以创建没有密码保护的新公司吗?只有菜单受密码保护?

这是非常不安全的,因为如果用户之前登录过并且知道 URL,或者只是猜测它,他可以(再次)无需密码进行身份验证。

请参阅OWASP 安全编码实践,尤其是身份验证和密码管理部分

于 2013-03-31T09:24:54.217 回答