所以我目前正在一个网站上工作,当用户登录时,如果登录成功,显示如下按钮:profile(指向用户配置文件)和注销,但有人可以更改css并使这些按钮出现,这将导致一些php错误,因为没有用户登录cliked。 我应该隐藏,显示元素与其他方法比CSS像javaScript或我应该处理所有这些可能的错误在PHP?如果用户更改只应在登录后才显示的隐藏元素的CSS,该怎么办?
回答
你不应该渲染那些元素。只在一页上呈现登录表单,就是这样。一旦用户登录,您将把他重定向到包含登录用户应该看到的所有元素的页面又名仪表板。为登录和仪表板创建单独的页面。首先登录。登录成功后,重定向到仪表板。大家可以看到,你用PHP
标签标记了你的问题,它告诉我们你知道PHP是什么。整个故事肯定会需要PHP。
注:请不要忘记,以防止开放的仪表板,如果没有登录
我做了演示如何简单鉴别作品的简单活动图。
如果未登录的人只是在浏览器中键入第二页的地址,该怎么办? –
'注意:如果没有登录,请不要忘记打开仪表盘。如果没有登录,重定向到'login.php' ...否则进入'dashboard.php'。 – Spectarion
@Spectarion所以没有安全的方法可以在同一页面上完成所有这些工作?也许如果我使用PHP来回显这些按钮,而不是改变他们的显示从“无”到“块”?这样他们不会出现只有当用户登录? – OneBeginner
你应该绝对处理这个用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
}
希望这有助于! :)
还应该注意,在显示任何安全内容之前应该验证会话。 – Derek
只要它只会导致错误,谁在乎?在那个时候,他们正在积极地搞乱你的网站,并且应该预料会发生错误。
然而这强调了在生产中关闭渲染错误消息的重要性。如果错误为潜在的攻击者提供了关于您的网站的更多信息,那么您会暴露自己太多。
我会确保它失败,没有副作用 - 但没有比这更需要努力。
例外
您不应该发送任何只有授权用户才能访问的信息。通过这个,我不是指按钮 - 而是实际数据,不管是用户个人资料还是新闻文章。
如果你在谈论按钮 - 那么它并不重要。如果你在谈论内容 - 你需要隐藏服务器端的内容。如果您可以在登录页面呈现的源代码中看到任何应该是安全的东西 - 它不是。
- 1. 如果用户登录,显示/隐藏元素?
- 2. 在用户用angularjs登录后显示一个隐藏的元素
- 3. 使用UserSettingsFragment登录后该怎么办
- 4. 如果用户无法使用其OpenID登录,该怎么办?
- 5. 如果我想让用户和管理员在登录后显示不同的布局,我该怎么办?
- 6. 显示/隐藏数据,如果用户登录/未在Magento
- 7. 为什么我的元素只在选择信用卡时才显示/隐藏?
- 8. 如果用户未登录,隐藏元素Omeka
- 9. 如果用户登录,在Zend2中显示隐藏登录/注销
- 10. 使用css隐藏和显示元素
- 11. 隐藏只有最后一个元素,如果家长有(15,45,75,105)元素(CSS只)
- 12. 有没有办法显示/隐藏没有CSS的元素?
- 13. 登录后隐藏HTML元素
- 14. CSS只隐藏子元素
- 15. 隐藏/显示元素点击并更改CSS
- 16. 登录后隐藏/更改GIDSignInButton
- 17. 显示隐藏的元素
- 18. 显示隐藏的元素
- 19. Git Laravel - 如果我更改供应商目录中的文件,该怎么办?
- 20. HTML,CSS,Javascript - 隐藏/显示元素
- 21. HTML/CSS显示/隐藏多个元素?
- 22. 用AJAX显示/隐藏JSF元素后如何隐藏触发元素?
- 23. css转换效果使用css3显示/隐藏元素
- 24. 只显示登录用户的记录
- 25. 隐藏后jQuery显示元素
- 26. 只有javascript和CSS才具有元素更改效果
- 27. 用javascript隐藏/显示CSS div - 隐藏后不再显示 -
- 28. 如果用户已经登录,隐藏FB登录按钮
- 29. 隐藏登录查看,如果用户登录
- 30. 如何更改元素样式中的显示属性隐藏/显示它?
如何不显示,如果用户不在家。 – Derek
登录我建议这样做,服务器端(PHP,你的情况),不应该显示HTML – Derek
'如果用户更改隐藏元素的CSS那应该只在登录后出现,那么他们将能够看到他们,不是吗?正如其他人所说,不要向他们不应该看到的任何客户发送任何信息......不能相信他们和他们的油腻的爪子....大声笑 – ArtisticPhoenix