添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Java 不提供针对 CSRF 攻击的内置保护;开发人员必须通过手动强制执行反 CSRF 令牌或使用许多经过良好测试的可用库之一来实现它。

小服务程序 API

当使用标准的 Servlet API 时,双重提交 cookie 技术可以如下实现。要生成用作标记的随机字符串,可以使用 SecureRandom 该类,例如:

public class CSRF {
	public static String getToken() throws NoSuchAlgorithmException{
	    // generate random data
	    SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
	    byte[] data = new byte[16];
	    secureRandom.nextBytes(data);
	    // convert to Base64 string
	    return Base64.getEncoder().encodeToString(data);

假设使用 JSP 页面呈现 HTML 页面,可以使用以下代码段将 CSRF 令牌添加到表单和响应 cookie:

// generate a random CSRF token String csrfToken = CSRF.getToken(); // place the CSRF token in a cookie javax.servlet.http.Cookie cookie = new javax.servlet.http.Cookie("csrfToken", csrfToken); response.addCookie(cookie); <form action="/action" method="POST"> <input type="hidden" name="csrfToken" value="<%= csrfToken %>"/> </form>

最后,对于每个操作,通过检查 cookie 中的 CSRF 令牌是否与表单中的值匹配来确保请求是合法的:

public void doAction(HttpServletRequest request, HttpServletResponse response) {
	// get the CSRF cookie
	String csrfCookie = null;
	for (Cookie cookie : request.getCookies()) {
		if (cookie.getName().equals("csrf")) {
			csrfCookie = cookie.getValue();
	// get the CSRF form field
	String csrfField = request.getParameter("csrf");
	// validate CSRF
	if (csrfCookie == null || csrfField == null || !csrfCookie.equals(csrfField)) {
		try {
			response.sendError(401);
		} catch (IOException e) {
			// ...
		return;
	// ...

OWASP -跨站点请求伪造备忘单MITRE - CWE 352

Cross-SiteRequestForgery(CSRF),文一般译作请求伪造。经常入选owasp漏洞列表Top10,在当前web漏洞排行,与XSS和SQL注入并列前三。与前两者相比,CSRF相对来说受到的关注要小很多,但是危害却非常大。通常情况下,有三种方法被广泛用来防御CSRF攻击:验证token,验证HTTP请求的Referer,还有验证XMLHttpRequests里的自定义header。鉴于种种原因,这三种方法都不是那么完美,各有利弊。在请求伪造(CSRF)攻击里面,攻击者通过用户的浏览器来注入额外的网络请求,来破坏一个网会话的完整性。而浏览器的安全策略是允许当前页面 1. 什么是请求伪造(CSRF)CSRF(Cross-site request forgery请求伪造,也被称为“One Click Attack”或者sessionRiding,通常缩写为CSRF或者XSRF,是一种对网的恶意利用。尽管听起来像脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信... 1.CSRF的基本概念、缩写、全称 CSRF(Cross-site request forgery):请求伪造。 PS:文名一定要记住。英文全称,如果记不住也拉倒。 2.CSRF的攻击原理 用户是网A的注册用户,且登录进去,于是网A就给用户下发cookie。 从上图可以看出,要完成一次CSRF攻击,受害者必须满足两个必要的条件: (1)登录受信任网A,并在本地生成Coo... 一、前言请求伪造(Cross-SiteRequest Forgeries, CSRF),是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击;有如下危害:1、利用已通过认证的用户权限更新设定信息;2、利用已通过认证的用户权限购买商品,虚拟货币转账;3、利用已通过认证的用户权限在留言板发表言论;二、攻击原理:第一步:验证用户访问存在CSR... 什么是CSRF 请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。 跟脚本(XSS)相比,XSS 利用的是用户对指定网的信任,CSRF 利用的是网对用户网页浏览器的信任... 在某些代码HttpURLConnection httpUrl = (HttpURLConnection) urlConnection;对服务器所在的内网、本地进行端口扫描,获取一些服务的banner信息。攻击内外网的web应用。sql注入、struct2、redis等。对内网web应用进行指纹识别,通过访问默认文件实现。攻击运行在内网或者本地的应用程序。利用file协议读取本地文件等。 随机化Token(CSRF Token):Token是用于验证网请求者身份的一种机制,可以防止CSRF攻击。该Token会在每次访问页面时刷新,以确保每次请求都需要新的Token。例如,在web应用程序,可以通过hidden field的方式将Token加入到表单,提交时验Referer检查:在服务端校验请求的Referer字段,确保请求是来自合法的来源页面,常用于辅助Token机制的验证。 CSRF的全名为Cross-site request forgery,它的文名为 请求伪造。CSRF是一种夹持用户在已经登陆的web应用程序上执行非本意的操作的攻击方式。。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…造成的问题包括:个人隐私泄露以及财产安全。 释意:请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网会认为是真正的用户操作而去执行。这利用了web用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。你这可以这么理解CSRF攻击:攻击者盗用... 脚本就是在url上带上恶意的js关键字然后脚本注入了,伪造用户请求就是没有经过登陆,用超链接或者直接url上敲地址进入系统,类似于sql注入这些都是安全漏洞。sql注入1、参数化查询预处理,如java使用PreparedStatement()处理变量。2、转义敏感字符及字符串(SQL的敏感字符包括“exec”,”xp_”,”sp_”,”declare”,”Union”,”cmd”,”+”,... 点击上方名片关注我,为你带来更多踩坑案例- 什么是SSRF-SSRF(Server-Side Request Forgery,服务器端请求伪造) 是一种由攻击者构造请求,由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统,因为服务器请求天然可以穿越防火墙。漏洞形成的原因大多是因为服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做正...