Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#Java# 规范1.10.1条修订建议 #32

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion Java安全指南.md
Original file line number Diff line number Diff line change
Expand Up @@ -644,7 +644,7 @@ web view层通常通过模板技术或者表达式引擎来实现界面与业务

##### 1.10.1【必须】部署CSRF防御机制

CSRF是指跨站请求伪造(Cross-site request forgery),是web常见的攻击之一。对于可重放的敏感操作请求,需部署CSRF防御机制。可参考以下两种常见的CSRF防御方式
CSRF是指跨站请求伪造(Cross-site request forgery),是web常见的攻击之一。对于可重放的敏感操作请求,需部署CSRF防御机制。可参考以下几种常见的CSRF防御方式

- 设置CSRF Token

Expand Down Expand Up @@ -689,6 +689,27 @@ CSRF是指跨站请求伪造(Cross-site request forgery),是web常见的
1. 要需要处理Referer为空的情况,当Referer为空则拒绝请求
2. 注意避免例如qq.com.evil.com 部分匹配的情况。


- 避免使用GET请求对服务端进行更改

基于GET请求的CSRF攻击成本相对较低,避免使用GET请求对服务端发起操作能够提高CSRF攻击门槛。

另外,由于在基于Referer头的防范手段中,可能为了避免对搜索引擎来源链接的“误伤”,则需要放过如下Header的请求:

```
Accept: text/html
Method: GET
```

这样这种类型的请求是暴露于攻击范围之中的。


- Samesite Cookie

CSRF攻击发生的前提是被攻击者的浏览器上已经具有被攻击网站的登录凭据,如果网站的登录凭据存储在Cookie中,那么可以对Cookie的Samesite属性进行设置,避免浏览器对非同源的请求传递登录凭据,进而对被攻击网站发起有效的请求。

##### 1.10.2【必须】权限校验

对于非公共操作,应当校验当前访问账号进行操作权限(常见于CMS)和数据权限校验。
Expand Down