-1

我用它来隐藏链接,直到用户登录后,我只是想知道这是否会导致生产代码中的任何安全问题或其他问题?我一直在测试它并且找不到问题,因为网站在用户登录之前不会给出 session_id。

if(session_id()){echo '<a href="./ewo.php" target="_self"> EWO </a>'... 
4

4 回答 4

0

确保添加一个功能,该功能将在会话被破坏后立即将用户重定向到登录页面,即注销。

此外,正如@Saeed Ansari 所提到的,向您的项目添加一些逻辑,以便在没有活动会话或用户未登录时仅呈现登录页面。

HTH。

于 2013-10-28T19:04:46.053 回答
0

无论哪种方式,如果您的解决方案只是在用户登录之前“隐藏此链接”,那么这不是建设性代码。

当用户登录时,您应该在会话中注册一个用户对象或用户 $_SESSION 标识符。

例如。用户登录,您设置一个标志 $_SESSION['Username'] = "Bob",其中 Bob 是用户的用户名。

然后在您的代码中,您可以执行以下操作:

if(array_key_exists('Username', $_SESSION)) { echo '<a href="./ewo.php" target="_self"> EWO </a>'; }

然后当用户成功登录您的站点时,在 $_SESSION 中注册他们的用户名(至少),即

$_SESSION['Username'] = 'Bob';

通过使用会话变量来完全控制会话是一个好主意,而不是仅仅依赖于会话是否具有 ID。

假设永远不安全,因此我还建议(如果您还没有这样做)检查 ewo.php 文件中的相同内容...检查会话是否具有注册的用户名/等,如果没有header('Location: /');重定向例如,将用户重定向回主页。

于 2013-10-28T19:06:50.823 回答
0

在您将会话检查也放入文件中之前,此代码没有问题

如果未设置会话 ID,则将它们发送回主页。因为如果用户知道 URL,那么他们可以导航到链接

于 2013-10-28T18:54:12.393 回答
0

你可以通过会话来做到这一点。

如果您想检查是否在会话中设置了变量(用户已登录),请使用:

<?php
session_start();


if (isset($_SESSION['username'])) {
   echo "Your link here";
} else {
   echo "login first";
}
?>
于 2017-10-19T11:14:40.387 回答