Questions tagged «csrf»

跨站点请求伪造是一种恶意攻击,它利用网站对用户浏览器的信任。

3
如何使用PHP正确添加跨站点请求伪造(CSRF)令牌
我正在尝试为我的网站上的表单添加一些安全性。一种形式是使用AJAX,另一种形式是简单的“与我们联系”形式。我正在尝试添加CSRF令牌。我遇到的问题是令牌有时仅在HTML“值”中显示。其余时间,该值为空。这是我在AJAX表单上使用的代码: PHP: if (!isset($_SESSION)) { session_start(); $_SESSION['formStarted'] = true; } if (!isset($_SESSION['token'])) {$token = md5(uniqid(rand(), TRUE)); $_SESSION['token'] = $token; } 的HTML <form> //... <input type="hidden" name="token" value="<?php echo $token; ?>" /> //... </form> 有什么建议?
96 php  security  session  csrf 

11
在请求参数'_csrf'或标头'X-CSRF-TOKEN'上发现无效的CSRF令牌'null'
配置Spring Security 3.2之后,_csrf.token未绑定到请求或会话对象。 这是spring安全配置: <http pattern="/login.jsp" security="none"/> <http> <intercept-url pattern="/**" access="ROLE_USER"/> <form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=1" default-target-url="/index.jsp"/> <logout/> <csrf /> </http> <authentication-manager> <authentication-provider> <user-service> <user name="test" password="test" authorities="ROLE_USER/> </user-service> </authentication-provider> </authentication-manager> login.jsp文件 <form name="f" action="${contextPath}/j_spring_security_check" method="post" > <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> <button id="ingresarButton" name="submit" type="submit" class="right" style="margin-right: 10px;">Ingresar</button> <span> <label for="usuario">Usuario …

30
在Laravel中发布请求-错误-419对不起,您的会话/ 419您的页面已过期
我安装了Laravel 5.7 向文件添加了表格 \resources\views\welcome.blade.php <form method="POST" action="/foo" > @csrf <input type="text" name="name"/><br/> <input type="submit" value="Add"/> </form> 已添加到文件 \routes\web.php Route::post('/foo', function () { echo 1; return; }); 发送POST请求后: 419对不起,您的会话已过期。请刷新,然后重试。 在版本5.6中,没有这样的问题。
88 php  laravel  csrf 

10
rails-“警告:无法验证CSRF令牌的真实性”用于json devise请求
如何检索CSRF令牌以通过JSON请求传递? 我知道出于安全原因,Rails正在检查所有请求类型(包括JSON / XML)上的CSRF令牌。 我可以放入控制器skip_before_filter :verify_authenticity_token,但是会失去CRSF保护(不建议:-))。 这个类似的(仍然不被接受)的答案表明 使用检索令牌 <%= form_authenticity_token %> 问题是如何?我是否需要先调用任何页面以检索令牌,然后使用Devise进行真正的身份验证?还是我可以从服务器上获得一次信息然后再使用它(直到我在服务器本身上手动更改它)?

5
JSON Web服务是否容易受到CSRF攻击?
我正在构建一个仅将JSON用于其请求和响应内容的Web服务(即,没有表单编码的有效负载)。 如果满足以下条件,Web服务是否容易受到CSRF攻击? POST没有顶级JSON对象(例如)的任何请求{"foo":"bar"}都将被400拒绝。例如,POST带有内容的请求42将因此被拒绝。 POST内容类型以外的任何请求application/json都将被400拒绝。例如,POST内容类型的请求application/x-www-form-urlencoded将因此被拒绝。 所有GET请求都是Safe,因此不会修改任何服务器端数据。 客户端通过会话cookie进行身份验证,在客户端通过POST使用JSON数据(例如)提供正确的用户名/密码对后,Web服务会为客户端提供会话cookie {"username":"user@example.com", "password":"my password"}。 补充问题:是PUT和DELETE要求日益容易受到CSRF?我问是因为大多数(全部?)浏览器似乎都不允许以HTML形式使用这些方法。 编辑:添加了项目#4。 编辑:到目前为止,很多好评论和答案,但是没有人提供此Web服务容易受到的特定CSRF攻击。
80 http  security  csrf 

6
如何在RESTful应用程序中防止CSRF?
通常使用以下方法之一来防止跨站请求伪造(CSRF): 检查引荐来源-RESTful但不可靠 将令牌插入表单并将令牌存储在服务器会话中-并非真正的RESTful 神秘的一次URI-出于与令牌相同的原因而不是RESTful 手动发送此请求的密码(不是HTTP身份验证使用的缓存密码)-RESTful但不方便 我的想法是使用用户机密,一个隐秘但静态的表单ID和JavaScript来生成令牌。 <form method="POST" action="/someresource" id="7099879082361234103"> <input type="hidden" name="token" value="generateToken(...)"> ... </form> GET /usersecret/john_doe 由JavaScript从已验证的用户获取。 回应:OK 89070135420357234586534346这个秘密从概念上讲是静态的,但是每天/每小时都可以更改……以提高安全性。这是唯一的机密内容。 使用JavaScript读取神秘的(但对所有用户而言都是静态的!)表单ID,并与用户密码一起处理: generateToken(7099879082361234103, 89070135420357234586534346) 将表单以及生成的令牌发送到服务器。 由于服务器知道用户密码和表单ID,因此可以与客户端在发送并比较两个结果之前运行相同的generateToken函数。仅当两个值相等时,该操作才被授权。 尽管事实上如果没有JavaScript也无法使用,这种方法有什么问题吗? 附录: 无状态CSRF保护

4
对抗Asp.Net WebApi的Angular,在服务器上实现CSRF
我正在Angular.js中实现一个网站,该网站访问了ASP.NET WebAPI后端。 Angular.js具有一些内置功能,可帮助进行反csrf保护。在每个http请求上,它将查找名为“ XSRF-TOKEN”的cookie,并将其作为名为“ X-XSRF-TOKEN”的标头提交。 这取决于Web服务器能够在验证用户身份之后设置XSRF-TOKEN cookie,然后检查X-XSRF-TOKEN标头中是否有传入请求。 该角文档状态: 要利用此优势,您的服务器需要在第一个HTTP GET请求上的名为XSRF-TOKEN的JavaScript可读会话cookie中设置令牌。在随后的非GET请求上,服务器可以验证cookie是否与X-XSRF-TOKEN HTTP标头匹配,因此,请确保只有在您的域上运行的JavaScript才能读取令牌。令牌对于每个用户必须是唯一的,并且必须可由服务器验证(以防止JavaScript编写自己的令牌)。我们建议该令牌是您的站点身份验证Cookie的摘要,并添加盐,以增强安全性。 我找不到针对ASP.NET WebAPI的任何良好示例,因此在各种来源的帮助下,我都做了自己的工作。我的问题是-有人能看到代码有什么问题吗? 首先,我定义了一个简单的帮助程序类: public class CsrfTokenHelper { const string ConstantSalt = "<ARandomString>"; public string GenerateCsrfTokenFromAuthToken(string authToken) { return GenerateCookieFriendlyHash(authToken); } public bool DoesCsrfTokenMatchAuthToken(string csrfToken, string authToken) { return csrfToken == GenerateCookieFriendlyHash(authToken); } private static string GenerateCookieFriendlyHash(string authToken) { using …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.