我有一个像这样的结构的网络应用程序。
<div id="public">
//....
</div>
<div id="admin">
//....
</div>
任何人都可以看到“公共”div。 “admin”div具有css display:none
,直到管理员用户登录,然后css变为display:inline
,并且变为可见。 admin div包含一些可能影响我们数据库的函数,因此保持其安全非常重要。
我意识到我可以简单地打开chrome dev控制台,找到admin div css,并将显示更改为内联,然后显示admin div。我该如何防止这种情况?或者,我怎样才能安全地隐藏管理员div,直到我可以验证管理员登录?
理想情况下,我想将此网站保留为单个html页面,但如果必须,我愿意改变它。我想到的一个解决方案是将admin html代码保留在服务器上,并在检测到成功登录时请求它。
有什么想法吗?
编辑:我正在使用Tomcat作为服务器,所以servlets。
答案 0 :(得分:1)
如果你使用的是php或者你需要的任何语言,如果你的代码出现条件,那么只有设置了$ admin变量才能看到它
if($admin){
<div id="admin">
//....
</div>
}
答案 1 :(得分:-1)
您可以使用AJAX调用来请求管理员代码,然后将Web服务器设置为仅在以管理员身份登录时提供代码。
从dov.amir的答案中复制/改编的代码示例(还有一个jQuery示例):
<script type="text/javascript">
function loadXMLDoc() {
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == XMLHttpRequest.DONE ) {
if(xmlhttp.status == 200){
document.getElementById("admin").innerHTML = xmlhttp.responseText;
}
else if(xmlhttp.status == 400) {
alert('There was an error 400')
}
else {
alert('something else other than 200 was returned')
}
}
}
xmlhttp.open("GET", "AdminHtml.txt", true); //Change to the address of your code
xmlhttp.send();
}
</script>
您需要在Web服务器上设置权限。