如何在java中保护URL参数

时间:2012-08-29 07:20:43

标签: java google-app-engine

示例网址http://dineshlingam.appspot.com/guestbook?name=xxx&skills=zzz

示例代码

public class GuestbookServlet extends HttpServlet 
{
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException 
    {
        String userName = req.getParameter("name");
        String userSkills = req.getParameter("skills");
        if(userName != null && userSkills != null)
        {
            res.setContentType("text/plain");
            res.getWriter().println("Name : " + userName + ", Skills : " + userSkills);
        }
        else
            res.sendRedirect(req.getRequestURI());
    }
}

我手动将此URL输入网络浏览器。

如何保护参数值。

给我任何一个合适的例子。因为我不知道java概念和google-app-engine概念。

我真的不知道SSL。所以,我需要用示例详细解释SSL。

我正在使用eclipse来开发我的应用程序。请帮我。感谢。

2 个答案:

答案 0 :(得分:1)

您的代码是可以访问CSS(跨站点脚本)攻击的页面的典型示例。使用HTTPS不会减轻这种影响。相反,在将其添加到页面之前,您需要转义任何输入。

例如,使用Apache Commons Lang库中的StringEscapeUtils.escapeHtml()StringEscapeUtils.escapeJavaScript()

答案 1 :(得分:1)

使用https无论如何都不保护url参数。如果要使参数安全,则必须将参数放在标题或正文中。但是,如果您直接从浏览器拨打电话,则无法将其放入标题中,因为它是一个GET请求。 +1到nfechner,用于在代码中突出显示XSS问题。

对于您的问题,可以使用https:

进行解决
  • 通过在页面中以单独的形式放置此搜索并使用HTTPS,而不是使用GEt调用来使用POST调用。
  • 如果您想使用GET请求,您必须将参数放入Headers,创建搜索页面,当用户点击搜索按钮时,通过使用https调用将其传入标题,对上述资源进行ajax调用。