在我的Web應用程序中,我使用JQuery中的函數在DIV
中加載一些JSP
頁面。如何防止客戶端訪問JSP頁面
$("#myDiv").load("chat.jsp");
在chat.jsp
,執行沒有Java代碼,除非該客戶端已登錄,手段,我查了會議。
String sessionId = session.getAttribute("SessionId");
if(sessionId.equals("100")){
//execute codes
}else{
//redirect to log in page
}
將要執行這些Java代碼,它們將out.println();
一些HTML元素。
我不希望客戶端在瀏覽器中寫入/chat.jsp
來訪問此頁面,因爲它看起來很糟糕,而主頁面中的其他內容不會在那裏,這可能會損害網絡應用安全。
如何限制某人直接訪問chat.jsp
,但通過保持訪問?
UPDATE:
JavaDB之外是一個類,我做了,它給連接到數據庫。
這是chat.jsp
<body>
<%
String userId = session.getAttribute("SessionId").toString();
if (userId != null) {
String roomId = request.getParameter("roomId");
String lastMessageId = request.getParameter("lastMessageId");
JavaDB myJavaDB = new JavaDB();
myJavaDB.Connect("Chat", "chat", "chat");
Connection conn = myJavaDB.getMyConnection();
Statement stmt = conn.createStatement();
String lastId = "";
int fi = 0;
ResultSet rset = stmt.executeQuery("select message,message_id,first_name,last_name from users u,messages m where u.user_id=m.user_id and m.message_id>" + lastMessageId + " and room_id=" + roomId + " order by m.message_id asc");
while (rset.next()) {
fi = 1;
lastId = rset.getString(2);
%>
<div class="message">
<div class="messageSender">
<%=rset.getString(3) + " " + rset.getString(4)%>
</div>
<div class="messageContents">
<%=rset.getString(1)%>
</div>
</div>
<% }
%>
<div class="lastId">
<% if (fi == 1) {%>
<%=lastId%>
<% } else {%>
<%=lastMessageId%>
<% }%></div>
<% if (fi == 1) {%>
<div class="messages">
</div>
<% }
} else {
response.sendRedirect("index.jsp");
}%>
</body>
傢伙,我不知道是什麼意思篩選。
UPDATE
如果我決定送,告訴我,這要求從jQuery的傳來的參數。
.load("chat.jsp", { jquery : "yes" });
然後將其簽入chat.jsp
String yesOrNo = request.getParameter("jquery");
然後,他們可以通過簡單地使用這個網址破解這個。
/chat.jsp?jquery=yes
或類似的東西..
UPDATE
我試圖馬克西姆的建議下,我得到這個,當我試圖訪問chat.jsp。
這是預期的效果?
我更新了我的答案。 –