【问题标题】:prevent Cross-Site Request Forgery (CSRF) Attack in Java防止Java中的跨站点请求伪造(CSRF)攻击
【发布时间】:2014-06-02 20:21:56
【问题描述】:

这是我的 Web 应用程序的示例。它是否容易受到跨站点请求伪造 (CSRF) 攻击?如何预防 CSRF?

这是我用于添加新用户的 new.jsp。

            <FORM NAME="Form" METHOD="post" ACTION="controller?event=PostNewUser">
                <TABLE WIDTH="655" BORDER="0" CELLPADDING="2" CELLSPACING="0" class="gray_background" align="center" >        
                    <TR><TD colspan="4" CLASS="text" align="left"><strong>Personal Details</strong></TD></TR>
                    <tr>
                        <td colspan="4">
                            <table >
                                <TR>
                                    <TD width="62" align="right" CLASS="text">Code :&nbsp;</td>
                                    <td width="144"><INPUT NAME="code" TYPE="text" id="code" VALUE="N" CLASS="password" maxlength="9"></td>
                                    <td width="66" align="right" CLASS="text">Name :&nbsp; </td>
                                    <TD width="144" align="left" CLASS="text"><input name="name" type="text" id="name" value="" class="password" maxlength="80">
                                    </TD>
                                    <TD width="44" align="right" CLASS="text">Email :&nbsp;</TD>
                                    <TD width="152" align="left" CLASS="text"><input name="email" type="text" id="email" value="" class="password" maxlength="70"></TD>
                                </TR>                       
                    <TR>
                        <TD colspan="4" CLASS="text" align="center"><INPUT NAME="submit" TYPE="submit" class="submit_button" VALUE="Create" ></TD>
                    </TR>        
                </TABLE>
            </FORM>

这是我的 servlet。

 public class PostNewAgentEventHandler extends EventHandlerBase {

 protected void process(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

 String name = request.getParameter("name").trim();
 String agentCode = request.getParameter("code").trim();
 String email = request.getParameter("email").trim();
}
}

【问题讨论】:

  • 既然你没有采取任何措施来阻止它,是的。有很多关于如何预防的信息。

标签: java jsp servlets csrf


【解决方案1】:

您可以考虑使用OWASP CSRFGuard。它是用于 servlet 应用程序的过滤器,旨在防止 CSRF 攻击。

他们的网站设计并不出色。向下滚动到页面底部可以找到Installation GuideUser Manual 和其他链接。

【讨论】:

  • OWASP 是一个很好的开始,如果你有足够的进取心,并且打算使用 Spring,我相信 Spring 4 包含开箱即用的 CSRF 支持。我相信它可以在 3.1+ 以下使用 MVC 拦截器轻松添加。
  • 是的,这很好。如果您使用的是框架,那么最好在那里寻找反 CSRF 功能。但我从 Suniel 使用普通 servlet 的问题中得到印象。
  • 同意——这就是为什么我提到“足够有进取心”
猜你喜欢
  • 1970-01-01
  • 2015-07-08
  • 2017-01-09
  • 2019-05-26
  • 2015-07-14
  • 2017-01-10
  • 2014-08-31
  • 2011-01-11
  • 1970-01-01
相关资源
最近更新 更多