当前位置: 首页 > 面试题库 >

使用Struts令牌防止跨站点请求伪造

谭健柏
2023-03-14
问题内容

我想为基于Struts 1.x框架的Web应用程序实施跨站点请求伪造预防。我知道struts 2框架为此提供了令牌拦截器,并且可以使用过滤器实现类似的功能。

我对一些想法感到困惑1)如何以简单的方式生成唯一令牌?(我可以为此目的使用Action类令牌来避免重复提交表单)

将struts 1.x框架令牌机制用于CSRF预防是否存在任何问题


问题答案:

Struts 1 Action令牌方法的工作方式与Struts
2令牌拦截器相同,因为它将为您的会话添加令牌并在表单提交时对其进行检查,但这是一个更加手动的过程。基本工作流程是:

  1. 用户通过Struts Action(不是直接到达JSP)进入表单。saveToken(request)在转发到包含表单的JSP之前,将调用Struts Action 。
  2. JSP上的表单必须使用<html:form>标记。
  3. 表单提交给您的Action将首先被调用isTokenValid(request, true),如果返回,您应该重定向到第一个Action并显示一条错误消息false。这还将重置下一个请求的令牌。

这样做不仅可以防止重复提交表单,而且任何脚本都必须先击中第一个Struts Action并进行会话,然后才能提交给第二个Struts
Action提交表单。由于一个站点无法为另一个站点设置会话,因此应避免使用CSRF。

如果通常将用户直接发送到JSP,请不要。相反,创建一个继承自的新类ActionForward并将其设置为它的execute()方法:

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)  throws Exception {
    saveToken(request);
    return super.execute(mapping, form, request, response);
}


 类似资料:
  • 我正在开发Web应用程序,并要求在发布之前对其运行。 然后我下载了Vega并快速扫描了我的webapp,发现了一个VAPT问题,如下所示: Vega检测到资源设置了不安全的跨源资源共享(CORS)访问控制。CORS提供了允许服务器将跨站点请求的资源访问限制到某些受信任域的机制。通过将“Access Control Allow origin”响应头的值设置为通配符值,所讨论的服务器已允许来自任何源的

  • 问题内容: 我正在尝试为我的网站上的表单添加一些安全性。一种形式是使用AJAX,另一种形式是简单的“与我们联系”形式。我正在尝试添加CSRF令牌。我遇到的问题是令牌有时仅在HTML“值”中显示。其余时间,该值为空。这是我在AJAX表单上使用的代码: PHP: 的HTML 有什么建议么? 问题答案: 对于安全代码,请不要以这种方式生成令牌: 是可以预见的 最多只加29位熵 不添加熵,而是确定性地将其

  • CSRF攻击迫使经过身份验证的用户(受害者)发送伪造的HTTP请求,包括受害者的会话cookie到易受攻击的Web应用程序,这允许攻击者强制受害者的浏览器生成请求,以便易受攻击的应用程序感知来自受害者。 我们下面来了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。 威胁代理 - 任何人都可以将内容加载到用户的浏览器中,从而迫使他们向您的网站提交请求。 攻击者的方法 - 攻击者创建伪造

  • 跨站请求伪造(CSRF)是一种漏洞利用,攻击者致使受害的最终用户按恶意URI(例如以误导的链接、图片或重定向提供给用户代理)到达受信任的服务器(通常由存在有效的会话Cookie而建立)。 针对客户端的重定向URI的CSRF攻击允许攻击者注入自己的授权码或访问令牌,这将导致在客户端中使用与攻击者的受保护资源关联的访问令牌而非受害者的(例如,保存受害者的银行账户信息到攻击者控制的受保护资源)。 客户端

  • 跨站请求伪造(Cross-site request forgery), 简称为 XSRF,是 Web 应用中常见的一个安全问题。前面的链接也详细讲述了 XSRF 攻击的实现方式。 当前防范 XSRF 的一种通用的方法,是对每一个用户都记录一个无法预知的 cookie 数据,然后要求所有提交的请求(POST/PUT/DELETE)中都必须带有这个 cookie 数据。如果此数据不匹配 ,那么这个请求

  • 2.5. 跨站请求伪造 跨站请求伪造(CSRF)是一种允许攻击者通过受害者发送任意HTTP请求的一类攻击方法。此处所指的受害者是一个不知情的同谋,所有的伪造请求都由他发起,而不是攻击者。这样,很你就很难确定哪些请求是属于跨站请求伪造攻击。事实上,如果没有对跨站请求伪造攻击进行特意防范的话,你的应用很有可能是有漏洞的。 请看下面一个简单的应用,它允许用户购买钢笔或铅笔。界面上包含下面的表单: COD