我有一个 JSF-Spring 集成应用程序。此应用程序中还集成了 Spring 安全性。这些是我的应用程序中的版本:
根据JSF 文档,JSF2.x [甚至旧版本] 中的所有 POST 请求都将受到 CSRF 保护。但是,我能够通过 CSRF 攻击来渗透我的应用程序。
我只尝试了一个不同的 JSF2.2 [没有 Spring] 示例应用程序,在这种情况下,我可以看到这个示例应用程序受 CSRF 保护。
所以我的理解是,JSF/Spring/Spring 安全组合在我的原始应用程序中出现了问题。不幸的是,日志文件中没有帮助信息。
我可以尝试使用Spring Security CSRF 保护。在那种情况下,挑战是我需要在所有 POST 情况下编辑代码。
我希望启用 JSF CSRF 保护以避免此代码更改。有什么建议吗?
我正在用Pinata进行测试。
我希望我的网站登录表单每次刷新页面时都会生成一个新的CSRF令牌.
我试着打电话
logout(request)
request.session.flush()
Run Code Online (Sandbox Code Playgroud)
但即使在服务器重启后,隐藏的表单字段也始终具有相同的标记.
这显然意味着django正在从cookie中读取数据.如何使它忽略cookie并生成一个新的?
或者,有没有办法让我有一个中间页面,在进入实际登录页面之前清除所有cookie?如何在Javascript中删除我的域的所有cookie?
我有一个应用程序需要使用一些 POST 数据从外部重定向到另一个 url。我有其他应用程序的 CSRF 令牌值。如何使用 Python 中的 requests 库构造一个简单的 POST 请求?
csrf_token = "kjsbfckjsdnfcksdnkl"
post_data = {'email': email, 'answer': answer}
response = request.post(URL, data=post_data)
Run Code Online (Sandbox Code Playgroud)
在哪里添加 CSRF 令牌?
我正在研究 struts2 Web 应用程序,我正在使用令牌拦截器处理 CSRF 漏洞。
我所做的是成功和错误,我会将用户重定向到同一页面,但会出现操作错误或成功消息。
<action name="saveApplicationForm" class="action.ApplicationFormAction"
method="saveApplicationForm">
<interceptor-ref name="token" />
<result name="invalid.token" type="tiles">applicationForm.tiles</result>
<result name="input" type="tiles">applicationForm.tiles</result>
</action>
Run Code Online (Sandbox Code Playgroud)
没有令牌/令牌会话拦截器一切正常,但是当我使用拦截器时,我收到了 NullPointerException。
堆栈跟踪
java.lang.NullPointerException: null
at action.ApplicationFormAction.saveApplicationForm(ApplicationFormAction.java:218) ~[ApplicationFormAction.class:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_67]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_67]
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450) [xwork-core-2.3.16.3.jar:2.3.16.3]
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289) [xwork-core-2.3.16.3.jar:2.3.16.3]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252) [xwork-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.interceptor.TokenInterceptor.handleValidToken(TokenInterceptor.java:193) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.interceptor.TokenInterceptor.handleToken(TokenInterceptor.java:154) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.interceptor.TokenInterceptor.doIntercept(TokenInterceptor.java:142) [struts2-core-2.3.16.3.jar:2.3.16.3]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.16.3.jar:2.3.16.3]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) [xwork-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) [struts2-core-2.3.16.3.jar:2.3.16.3] …Run Code Online (Sandbox Code Playgroud) java struts2 csrf-protection interceptorstack struts2-interceptors
好吧,仍然试图围绕它们是什么,并且需要......相信我我已经阅读了很多并且认为我理解但我可能不......
我能得到的最接近的是,当您的网站上有任何形式的登录页面时,绝对需要它们......
我的问题是,当您出于任何原因拥有基本的联系表格和/或填写表格时……您是否需要这些页面的 CSRF 令牌?
我有一个用 vb6 和经典 asp(12 年前)开发的应用程序。现在我必须防止跨站点请求伪造(CSRF)。
我怎样才能做到这一点?
我正在尝试做一个简单的视图,我希望能够发出一个发布请求。我需要生成一个csrf令牌,这是我拥有的html视图:
<form method="POST" action="/formsubmit">
{!! csrf_field() !!}
First Name: <br>
<input type="text" name="firstname"><br>
Last Name:<br>s
<input type="text" name="lastname"><br>
<input type="submit" name="Submit"><br>
</form>
Run Code Online (Sandbox Code Playgroud)
这是我的路线:
Route::get('form', function(){
return view('form');
});
Route::post('formsubmit',function(){
return 'Form Posted.';
});
Auth::routes();
Run Code Online (Sandbox Code Playgroud)
这是我尝试网址时发生的情况:
如您所见,它只是打印函数的名称,但从未调用过函数,也不会生成隐藏字段。为了使其正常工作需要做些什么吗?
我的 Ajax 调用受“Access-Control-Allow-Origin”保护
但是,仍然可以从 Google Chrome 工具进行一些 ajax 调用。
有没有办法阻止来自 Google Chrome 的 ajax 调用?
(设置CSRF保护的简单方法?)
Forbidden (CSRF token missing or incorrect.)当我尝试使用登录页面时收到错误。
场景如下:
Forbidden (CSRF token missing or incorrect.)错误。csrf_token是在表格中。为什么会发生这种情况?我该如何修复它?
我不知道这会有帮助,但这是我的views.py登录信息
class Login_View(LoginView):
template_name = 'login.html'
def post(self, request, *args, **kwargs):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
response_data = {}
if user is not None:
if user.is_active:
login(request, user)
response_data['result'] = 'success'
else:
return HttpResponse("Inactive user.")
else:
response_data['result'] = 'fail'
return HttpResponse(json.dumps(response_data), content_type="application/json")
Run Code Online (Sandbox Code Playgroud) csrf ×4
django ×3
ajax ×2
django-csrf ×2
java ×2
javascript ×2
php ×2
asp-classic ×1
asp.net ×1
contact-form ×1
jsf ×1
laravel-5.4 ×1
python ×1
spring ×1
struts2 ×1