Servlet参数加密

时间:2010-08-20 07:51:18

标签: java security servlets

仍然在这里学习JSP Web应用程序。

我在网络应用程序中已经这样做了一段时间,但我想知道更安全的解决方案。

想象一个显示某些图书信息的表格。当用户单击表中的一行时, 我基本上将BookID与url一起发送。

示例网址。 http://locathost:8080/myapp/editbook.htm?bookID=3

在我的servlet中。

String strBookID = request.getParameter("bookID");

我认为这有点弱,有没有办法可以提供比这更安全的方式。 如果我将BookID与URL一起发送,黑客更容易编辑URL。

您可以在客户端和服务器端分享一些关于如何执行此操作的链接吗?

由于

2 个答案:

答案 0 :(得分:2)

  

我认为这有点弱,有没有办法让我能提供更安全的方式。

您必须根据应用程序定义“安全”。对于出售书籍的公共网站而言,要求是完全不同的,这是一个托管机密卷的私人图书馆,而其他任何应用程序都在其中。

至少应该执行以下操作 -

  1. 确认bookID实际上是一个整数并且在预期范围内。
  2. 确保在参数化SQL查询中绑定 bookid - 这是为了防止SQL注入。
  3. 如果找不到图书,请显示“未找到图书”页面
  4. 对于公共网站,以上就足够了。你实际上希望人们发现你的书籍,所以如果有人修改了bookID,你就不应该在乎。

    对于安全的库,您必须做更多的事情。

    1. 确保URL在web.xml中受到保护,因此只有经过身份验证和授权的用户才能访问该网址
    2. 验证当前用户是否有权访问bookID。您可以在会话对象中存储可供用户使用的书籍列表。
    3. 如果用户无权访问,请返回403错误页面。
    4. 还有其他一些保护网址的策略;一些人使用令牌来确保URL没有被操纵。其他人不向客户端发送bookID,而是依赖于号码{1到n},其中只有服务器知道1对应于Book A,依此类推。但我们的想法是确保用户无法访问他没有权限的图书。

      如果您使用Spring,我强烈推荐Spring Security。否则请查看JAAS。

答案 1 :(得分:0)

您必须假设任何用户都可以向您发送任何内容。解决方案不是避免用户在URL中发送数据,而是控制他们实际上可以执行以下操作。

您需要身份验证和授权。

How to use authentication with your web.xml

Defining Security Requirements for Web Applications