在Web應用程序中,當用戶訪問學生列表頁面時,屏幕將顯示帶有超鏈接的學生姓名列表。只顯示允許用戶看到的學生姓名。當用戶點擊超鏈接時,會打開一個新窗口,顯示用戶的詳細信息。子窗口的地址欄顯示如下的url。如何在春季限制對網址的直接訪問
爲myhost:8080/studentID = 100
的問題是,用戶可以修改參數studentID的價值,並得到一些其他的學生,他/她是沒有資格看的細節(因此未顯示先前的列表屏幕)。這是一個安全問題 - 網址操作。
我想到了一些可以防止這種情況的方法。
在Web應用程序中,當用戶訪問學生列表頁面時,屏幕將顯示帶有超鏈接的學生姓名列表。只顯示允許用戶看到的學生姓名。當用戶點擊超鏈接時,會打開一個新窗口,顯示用戶的詳細信息。子窗口的地址欄顯示如下的url。如何在春季限制對網址的直接訪問
爲myhost:8080/studentID = 100
的問題是,用戶可以修改參數studentID的價值,並得到一些其他的學生,他/她是沒有資格看的細節(因此未顯示先前的列表屏幕)。這是一個安全問題 - 網址操作。
我想到了一些可以防止這種情況的方法。
您需要使用cookie和唯一會話ID。因此,用戶登錄並獲得與具有這些臨時訪問令牌或會話ID的數據庫表對應的唯一密鑰。通常這些令牌只在一段時間內有效。在服務器端,您可以測試數據庫的cookie值並重定向不允許訪問的用戶。祝你好運,你問正確的問題繼續前進!
您無需打開單獨的窗口。這裏是一些例子。我在這裏使用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
?>
然後數據變量趕上響應,並增加其使用Spring框架
對於教程#DATA ID
.done(function(data) {
$("#data").html(data);
});
Prakash的答案是最好的出發點 - 但是從這個問題來看,它聽起來像是在尋找更細粒度的安全性 - 什麼定義了用戶可以看到的學生?用戶是否可以看見學生(在這種情況下,基本的基於角色的安全性將會這樣做),還是用戶只能看到選定的一組學生(例如,一位教師只能看到他們所教的學生)?後者最容易用基於角色和控制器級別驗證/檢查請求是否有效來解決 – rhinds