我是一名发展中的学生(第二年)。我目前正在实习,我的任务之一是向网站添加身份验证系统。
它“有效”,但是我认为这是一个非常糟糕的代码,我正在寻求有关最佳实践的建议并改进此解决方案。
该项目只是一个常规的库存管理系统,菜单允许用户选择读取或写入,然后(单击后)滚动菜单让他们从更多选项中进行选择。
页面包含此类:
<style type="text/css">
/* a li.unclickable { text-decoration: none; } */
/* a li.unclickable:hover { cursor: default; } */
.unclickable {
pointer-events:none;
opacity:0.7;
}
</style>
,仅在此处使用身份验证:
<?php
if ($admin =="1") {
echo '<li>';
}
else {
echo '<li class="unclickable" >';
}
?>
//some code then
</li>
$admin
的值是0或1,存储在一个会话中,理论上一切正常,我可以避免使用,但是您只需按F12键并编辑类(只需将其删除)即可,整个认证系统就没用了。
是否有一种方法可以防止用户这样做,或者我应该选择另一种方法来解决此问题?
该公司可能不会发现,因为他们没有任何开发人员/技术人员,但是我认为给他们这个并说它完美无缺是没有道理的。
我在MVC中使用PHP,欢迎您提出任何建议或问题,谢谢。
答案 0 :(得分:0)
没有办法阻止浏览器devtools。 HTML页面完全由用户控制。每个安全检查都必须在服务器端进行。
执行此操作的正确位置是登录页面(通过按按钮进行调用的页面),并在进行任何身份验证逻辑之前再次检查$admin
的值。