2017-08-07 40 views
0

所以我目前正在一个网站上工作,当用户登录时,如果登录成功,显示如下按钮:profile(指向用户配置文件)和注销,但有人可以更改css并使这些按钮出现,这将导致一些php错误,因为没有用户登录cliked。 我应该隐藏,显示元素与其他方法比CSS像javaScript或我应该处理所有这些可能的错误在PHP?如果用户更改只应在登录后才显示的隐藏元素的CSS,该怎么办?

+2

如何不显示,如果用户不在家。 – Derek

+2

登录我建议这样做,服务器端(PHP,你的情况),不应该显示HTML – Derek

+0

'如果用户更改隐藏元素的CSS那应该只在登录后出现,那么他们将能够看到他们,不是吗?正如其他人所说,不要向他们不应该看到的任何客户发送任何信息......不能相信他们和他们的油腻的爪子....大声笑 – ArtisticPhoenix

回答

3

你不应该渲染那些元素。只在一页上呈现登录表单,就是这样。一旦用户登录,您将把他重定向到包含登录用户应该看到的所有元素的页面又名仪表板。为登录和仪表板创建单独的页面。首先登录。登录成功后,重定向到仪表板。大家可以看到,你用PHP标签标记了你的问题,它告诉我们你知道PHP是什么。整个故事肯定会需要PHP。

注:请不要忘记,以防止开放的仪表板,如果没有登录

我做了演示如何简单鉴别作品的简单活动图。

enter image description here

+1

如果未登录的人只是在浏览器中键入第二页的地址,该怎么办? –

+0

'注意:如果没有登录,请不要忘记打开仪表盘。如果没有登录,重定向到'login.php' ...否则进入'dashboard.php'。 – Spectarion

+0

@Spectarion所以没有安全的方法可以在同一页面上完成所有这些工作?也许如果我使用PHP来回显这些按钮,而不是改变他们的显示从“无”到“块”?这样他们不会出现只有当用户登录? – OneBeginner

1

你应该绝对处理这个用PHP; 不是处理这个服务器端会是一个巨大的安全漏洞!

用户成功登录后,将其登录信息存储在会话中。然后在安全页面上检查该会话。

这里有一个小例子:

<?php 
sec_session_start(); // Optional but recommended 
if (!isset($_SESSION['user_id'])) { 
?> 
    <p>Show secure content</p> 
<?php 
} 
else { 
    header("../index.php"); 
} 
?> 

这样,登录的用户看到了安全内容,而一个非登录的用户将被自动重定向。

需要注意的是PHP的$_SESSION是不安全的,你可能需要编写自己的真正安全的一个(如以下):

function sec_session_start() { 
    $session_name = 'sec_session_id'; // Set a custom session name 
    $secure = SECURE; 
    // This stops JavaScript being able to access the session ID 
    $httponly = true; 
    // Forces sessions to only use cookies 
    if (ini_set('session.use_only_cookies', 1) === FALSE) { 
     header("Location: ../error.php"); 
     exit(); 
    } 
    // Gets current cookies params 
    $cookieParams = session_get_cookie_params(); 
    session_set_cookie_params($cookieParams["lifetime"], 
     $cookieParams["path"], 
     $cookieParams["domain"], 
     $secure, 
     $httponly); 
    // Sets the session name to the one set above 
    session_name($session_name); 
    session_start();    // Start the PHP session 
    session_regenerate_id(true); // Regenerate the session, delete the old one 
} 

希望这有助于! :)

+0

还应该注意,在显示任何安全内容之前应该验证会话。 – Derek

1

只要它只会导致错误,谁在乎?在那个时候,他们正在积极地搞乱你的网站,并且应该预料会发生错误。

然而这强调了在生产中关闭渲染错误消息的重要性。如果错误为潜在的攻击者提供了关于您的网站的更多信息,那么您会暴露自己太多。

我会确保它失败,没有副作用 - 但没有比这更需要努力。

例外

您不应该发送任何只有授权用户才能访问的信息。通过这个,我不是指按钮 - 而是实际数据,不管是用户个人资料还是新闻文章。

如果你在谈论按钮 - 那么它并不重要。如果你在谈论内容 - 你需要隐藏服务器端的内容。如果您可以在登录页面呈现的源代码中看到任何应该是安全的东西 - 它不是。

相关问题