今天,我在我的web應用程序中發現了一個安全漏洞(請原諒,如果這是因爲我無法在SO上找到它而提及)。考慮下面的代碼:HTML前端安全
<html>
<head>
<script>
intv = setTimeout(function(){test()} , 10000);
function test(){
val = document.getElementById('tt').value;
alert(val);
intv = setTimeout(function(){test()} , 10000);
}
</script>
</head>
<body>
<input type="hidden" value="10" id="tt">
</body>
</html>
問題:
該代碼將提醒一個輸入字段的值與間隔的10秒。第一次提醒後,我通過查看其源代碼來更改瀏覽器中的輸入字段值。它會提醒我稍後添加的價值,這對我不利。
真實的生活場景:
我有一個虛擬教室,其中學生和老師都參加課堂討論。我每隔5秒發送一次ajax請求以更新後端課程的持續時間,並在db中持續時間字段中添加+5
,之後學生必須根據他們在課程中所花費的時間向我們付款。如果一個聰明的人只是在瀏覽器中編輯源代碼,而不是在5秒後發送請求,他會改變爲1小時(爲了爭辯)來欺騙我的邏輯。如何防止客戶端的任何非法活動?
你爲什麼不使用服務器的時鐘?記錄會話開始時的服務器時間,並在完成時記錄服務器時間,然後使用這些值計算課程長度。 –
此問題僅與此場景無關。問題是如何避免這種事件,用戶正在改變他們不應該改變的價值。雖然你的建議很好。 –
沒有辦法。那時你就進入了客戶領域,他們有權力做他們想做的事情。 –