0

示例 URL 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 输入到 Web 浏览器。

如何确保参数值。

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

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

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

4

2 回答 2

1

使用 https 无论如何都不会保护 url 参数。如果要使其安全,则必须将参数放在标题或正文中。但是,如果您为此直接从浏览器进行调用,则不能将其放在标头中,也不能放在正文中,因为它是一个 GET 请求。+1 到 nfechner 以在您的代码中突出显示 XSS 问题。

对于您的问题,这里是使用 https 的可能解决方法:

  • 代替 GEt 调用使用 POST 调用,方法是将此搜索以单独的形式放在您的页面中,并在此之上使用 HTTPS。
  • 如果要使用 GET 请求,则必须将参数放在 Headers 中,创建一个搜索页面,当用户点击搜索按钮时,通过使用 https 调用将其传递到 header 来对上述资源进行 ajax 调用。
于 2012-08-29T07:47:28.873 回答
1

您的代码是易受 CSS(跨站点脚本)攻击的页面的经典示例。使用 HTTPS 不会缓解这种情况。相反,您需要在将任何输入添加到页面之前对其进行转义。

例如,通过使用StringEscapeUtils.escapeHtml()StringEscapeUtils.escapeJavaScript()来自 Apache Commons Lang 库。

于 2012-08-29T07:25:23.973 回答