Java 如何在spring中限制对url的直接访问
在web应用程序中,当用户访问学生列表页面时,屏幕将显示带有超链接的学生姓名列表。仅显示允许用户查看的学生姓名。当用户单击超链接时,将打开一个新窗口,显示用户的详细信息。子窗口的地址栏显示url,如下所示 myhost:8080/学生ID=100 问题是,用户可能会更改参数studentID的值,并获取他/她没有资格查看的其他学生的详细信息,因此不会显示在上一个列表屏幕中。这是一个安全问题—url操纵Java 如何在spring中限制对url的直接访问,java,javascript,android,jquery,spring-security,Java,Javascript,Android,Jquery,Spring Security,在web应用程序中,当用户访问学生列表页面时,屏幕将显示带有超链接的学生姓名列表。仅显示允许用户查看的学生姓名。当用户单击超链接时,将打开一个新窗口,显示用户的详细信息。子窗口的地址栏显示url,如下所示 myhost:8080/学生ID=100 问题是,用户可能会更改参数studentID的值,并获取他/她没有资格查看的其他学生的详细信息,因此不会显示在上一个列表屏幕中。这是一个安全问题—url操纵 我可以想出一些方法来防止这种情况 您需要使用cookie和唯一的会话ID。因此,用户登录并获得
我可以想出一些方法来防止这种情况 您需要使用cookie和唯一的会话ID。因此,用户登录并获得一个唯一密钥,该密钥对应于具有这些临时访问令牌或会话id的数据库表。通常,这些令牌仅在一段时间内有效。在服务器端,您可以将cookie值测试到数据库,并重定向不允许访问的用户。祝你好运,你问对了问题,继续 您不需要打开单独的窗口。这里有一些例子。我在这里使用Jquery
<script type='text/javascript' src='http://code.jquery.com/jquery-1.6.4.js'></script>
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
?>
使用Spring框架实现基于角色的安全性 有关教程,您可以参考:
Prakash的答案是最好的起点——但从这个问题上看,你似乎在寻找更细粒度的安全性——什么定义了用户可以看到的学生?它是否像用户可以看到学生那样简单?在这种情况下,基本的基于角色的安全性就可以了,还是用户只能看到选定的学生组。老师只能看到他们教的学生?后者最容易通过基于角色加控制器级别的验证/检查请求是否有效来解决
$(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);
});
});
<?php
$studentID=$_POST['studentID'];
//echo student details
?>
.done(function(data) {
$("#data").html(data);
});