【问题标题】:Verifying Cookies in JSP using JSTL使用 JSTL 在 JSP 中验证 Cookie
【发布时间】:2011-09-05 06:04:20
【问题描述】:

我试图弄清楚如何使用 cookie 来防止黑客输入指向 Java Web 应用程序内部部分的 URL,除非用户登录,否则该部分不应访问。

例如,我想防止黑客输入http://domain.com/myapp/listtable.jsp 并能够在不登录的情况下查看表格。

我有一个 servlet,它存储了它已分发给客户端的所有 cookie 的列表。我很难理解 JSP/JSTL 代码会是什么样子,以检查请求中的 cookie 并将其与服务器存储的内容进行比较。

类似:

    <c:forEach items="${cookie}" var="currentCookie">  

        <!-- Compare each incoming cookie with the cookies kept in the servlet,
             if there's not a match then redirect to the login page. Otherwise,
             show the contents of the page below --> 

    </c:forEach>  

<html>

    --- main page HTML here

谁能给我一些关于如何做到这一点的建议?

【问题讨论】:

  • 这是一个 servlet 的工作,而不是一个 JSP
  • 是的,但是如果直接在客户端浏览器中输入 jsp 的 URL,servlet 不会在 JSP 之前运行,对吗?
  • JSP 不应该对浏览器直接可见,它们应该隐藏在 WEB-INF 中,并通过 servlet 访问。这是 java webapps 的基本良好设计。
  • 查看stackoverflow.com/tags/servlet-filters/info 了解 servlet 过滤器。它甚至包含一个 hello world 过滤器,它完全符合您的要求。

标签: java jsp cookies jstl


【解决方案1】:

这应该是Filter 的工作而不是视图

  • 配置Filter 以检查您的受保护资源
  • 检查用户的会话是否具有逻辑上使他登录的某些值。
  • 如果不将用户重定向到登录视图

另见

【讨论】:

  • @Elite:是的,但@Jigar 很明智地将其发布为答案 :)
【解决方案2】:

我会亲自将我的 JSP 或任何演示内容(您认为受保护的)添加到 WEB-INF 文件夹下,并将其相应地映射到您的控制器。这样,servlet 容器会将其隐藏起来,不让外部查看。

【讨论】:

    【解决方案3】:

    即使这不是正确的方法……实际上你也可以这样做。

    试试这个:

        <c:forEach items="${cookie}" var="currentCookie">  
    
                <!-- Compare each incoming cookie with the cookies kept in the servlet,
                     if there's not a match then redirect to the login page. Otherwise,
                     show the contents of the page below --> 
    
    
                ${currentCookie.value.name} - ${currentCookie.value.value}<br/>
    
                <c:if test="${currentCookie.value.name=='JSESSIONID'}">
                    Your Session is ${currentCookie.value.value}
                </c:if> 
    
    
        </c:forEach>  
    

    【讨论】:

    • currentCookie.value替换成currentCookie就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2013-10-03
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多