Files
trident/README.md
2017-09-14 17:38:34 +08:00

76 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Trident三叉戟
> Java Code Security Component JAVA代码安全组件
目前支持的功能如下:
1. URL白名单验证 (已完成)
2. checkSSRF (已完成)
3. checkReferer (未做)
4. csrfToken (未做)
5. xssEncode (未做)
6. getRealIP (未做)
## URL白名单验证
### 验证逻辑
1. 取URL一级域名
2. 判断是否在域名白名单列表内
### 验证代码
合法URL返回true非法URL返回false。
```java
// URL白名单组件测试
checkURL urlCheck = new checkURL();
String[] urlWList = {"joychou.com", "joychou.me"};
Boolean ret = urlCheck.checkUrlWlist("http://test.joychou.org", urlWList);
System.out.println(ret);
```
## checkSSRF
### 验证逻辑
1. 取URL的Host
2. 取Host的IP
3. 判断是否是内网IP是内网IP直接return不再往下执行
4. 请求URL
5. 如果有跳转取出跳转URL执行第1步
### 验证代码
如果是内网IP返回false表示checkSSRF不通过否则返回true即合法返回true。
URL只支持HTTP协议。
```java
// SSRF组件测试
SSRF check = new SSRF();
String url = "http://dns_rebind.joychou.me";
ret = check.checkSSRF(url);
if (ret){
String con = Request.Get(url).execute().returnContent().toString();
System.out.println(con);
}
else {
System.out.println("Bad boy. The url is illegal");
}
```
### 绕过姿势
以上代码在设置TTL为0的情况可以用DNS Rebinding绕过。
但是只要Java不设置TTL为0该代码逻辑上不存在被绕过风险。
## 获取真实IP
用这份代码必须保证前面Proxy有把真实IP放到X-Real-IP头。