在Web应用程序中,当用户访问学生列表页面时,屏幕会显示具有超链接的学生姓名列表。仅显示允许用户查看的学生姓名。当用户单击超链接时,将打开一个新窗口,显示用户的详细信息。子窗口的地址栏显示如下URL。
myhost:8080 / studentID = 100
问题是用户可以更改参数studentID的值并获取他/她没有资格看到的其他学生的详细信息(因此未显示在上一个列表屏幕中)。这是一个安全问题 - 网址操纵。
我能想出一些阻止这种情况的方法。
答案 0 :(得分:1)
使用Spring Framework实现基于角色的安全性
教程您可以参考:
http://www.mkyong.com/spring-security/spring-security-access-control-example/
答案 1 :(得分:0)
您需要使用Cookie和唯一会话ID。因此,用户登录并被赋予唯一密钥,该密钥对应于具有这些临时访问令牌或会话ID的数据库表。通常这些令牌仅在一段时间内有效。在服务器端,您可以测试数据库的cookie值并重定向不允许访问的用户。祝你好运,你提出正确的问题就一直坚持下去!
答案 2 :(得分:0)
您无需打开单独的窗口。这是一些例子。我在这里使用Jquery。
<script type='text/javascript' src='http://code.jquery.com/jquery-1.6.4.js'></script>
示例HTML
<div id="blockbox" >
<div class="contents">
<div id="data"></div>
<div class="close">close</div>
</div>
</div>
<div>
<a href="#" stid='1'>Name1</a>
<a href="#" stid='2'>Name2</a>
<a href="#" stid='3'>Name3</a>
<a href="#" stid='4'>Name4</a>
<a href="#" stid='5'>Name5</a>
</div>
CSS
div.contents
{
color:#111;
font-family: "Calibri";
background-color: #eee;
text-align: left;
min-height: 100px;
box-shadow: 0px 0px 7px #000;
position: absolute;
width:200px;
height: 10px;
margin-left:20%;
margin-top:20%;
padding: 16px;
z-index:2000;
display: inline-block;
}
div.contents .close
{
width: 20px;
height: 24px;
position: absolute;
top: 0px;
right: 30px;
cursor: pointer;
}
Jquery的
$(document).ready(function(){
$("#blockbox").fadeOut(0);
$("div a").click(function(e){
e.preventDefault();
$("#blockbox").fadeIn(100);
//$("#data").html($(this).attr("stid"));
//This will sent studentID to relevent page
//and retrieve the result
$.post("myhost:8080",
{
studentID:$(this).attr("stid"),
}
).done(function(data) {
$("#data").html(data);
});
});
$(".close").click(function(e){
$("#blockbox").fadeOut(100);
});
});
您的服务器端脚本捕获$ .post方法发送的studentID。我在这里使用php
<?php
$studentID=$_POST['studentID'];
//echo student details
?>
然后数据变量捕获响应并将其添加到#data id
.done(function(data) {
$("#data").html(data);
});