parent
5ce8feea75
commit
c70be3539f
@ -0,0 +1,16 @@ |
|||||||
|
<!-- |
||||||
|
~ Copyright (c) 2023 - 2024. KeyWare.Co.Ltd All rights reserved. |
||||||
|
~ 项目名称:信息安全性设计准则检查插件 |
||||||
|
~ 项目描述:用于检查源代码的安全性设计准则的Sonarqube插件 |
||||||
|
~ 版权说明:本软件属北京关键科技股份有限公司所有,在未获得北京关键科技股份有限公司正式授权情况下,任何企业和个人,不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。 |
||||||
|
--> |
||||||
|
|
||||||
|
<p>页面隐藏域字段、Cookie、URL等关键参数不能直接获取,应缓存到服务器端的会话中并通过会话获取</p> |
||||||
|
<h2>页面隐藏域字段、Cookie、URL等关键参数不能直接获取,应缓存到服务器端的会话中并通过会话获取</h2> |
||||||
|
<pre> |
||||||
|
|
||||||
|
</pre> |
||||||
|
<h2>合规解决方案</h2> |
||||||
|
<pre> |
||||||
|
|
||||||
|
</pre> |
@ -0,0 +1,13 @@ |
|||||||
|
{ |
||||||
|
"title": "页面隐藏域字段、Cookie、URL等关键参数不能直接获取,应缓存到服务器端的会话中并通过会话获取", |
||||||
|
"type": "CODE_SMELL", |
||||||
|
"status": "ready", |
||||||
|
"remediation": { |
||||||
|
"func": "Constant\/Issue", |
||||||
|
"constantCost": "5min" |
||||||
|
}, |
||||||
|
"tags": [ |
||||||
|
"28suo" |
||||||
|
], |
||||||
|
"defaultSeverity": "Minor" |
||||||
|
} |
@ -1,22 +1,31 @@ |
|||||||
package com.example; |
import org.springframework.web.bind.annotation.GetMapping; |
||||||
import javax.servlet.http.HttpServlet; |
import org.springframework.web.bind.annotation.RestController; |
||||||
import javax.servlet.http.HttpServletRequest; |
|
||||||
import javax.servlet.http.HttpServletResponse; |
import javax.servlet.http.*; |
||||||
import javax.servlet.http.HttpSession; |
|
||||||
public class ExampleServlet extends HttpServlet { |
public class ExampleServlet extends HttpServlet { |
||||||
|
private static final long serialVersionUID = 1391640560504378168L; |
||||||
|
|
||||||
public void doGet(HttpServletRequest request, HttpServletResponse response) { |
public void doGet(HttpServletRequest request, HttpServletResponse response) { |
||||||
// 直接从request获取参数
|
// 直接从request获取参数
|
||||||
String param = request.getParameter("userId"); // Noncompliant {{建议将页面隐藏域字段、Cookie、URL等关键参数缓存到服务器端的会话中,并通过会话获取}}
|
String param = request.getParameter("userId"); // Noncompliant {{页面隐藏域字段、Cookie、URL等关键参数不能直接获取,应缓存到服务器端的会话中并通过会话获取}}
|
||||||
|
request.getParameter("userpassword");// Noncompliant {{页面隐藏域字段、Cookie、URL等关键参数不能直接获取,应缓存到服务器端的会话中并通过会话获取}}
|
||||||
|
request.getParameter("token");// Noncompliant {{页面隐藏域字段、Cookie、URL等关键参数不能直接获取,应缓存到服务器端的会话中并通过会话获取}}
|
||||||
|
request.getParameter("url");// Noncompliant {{页面隐藏域字段、Cookie、URL等关键参数不能直接获取,应缓存到服务器端的会话中并通过会话获取}}
|
||||||
// 直接从request获取Cookies
|
// 直接从request获取Cookies
|
||||||
Cookie[] cookies = request.getCookies(); |
Cookie[] cookies = request.getCookies();// Noncompliant {{页面隐藏域字段、Cookie、URL等关键参数不能直接获取,应缓存到服务器端的会话中并通过会话获取}}
|
||||||
// 将参数存储到session
|
// 将参数存储到session
|
||||||
HttpSession session = request.getSession(); |
HttpSession session = request.getSession(); |
||||||
session.setAttribute("sessionParam", param); |
session.setAttribute("sessionParam", param); |
||||||
// 其他代码...
|
// 其他代码...
|
||||||
} |
} |
||||||
|
|
||||||
private void get(HttpServletRequest request, HttpServletResponse response){ |
@RestController |
||||||
|
class TestController{ |
||||||
|
|
||||||
|
@GetMapping("/get") |
||||||
|
public void get(HttpServletRequest request){ |
||||||
|
String userId = request.getParameter("userId");// Noncompliant {{页面隐藏域字段、Cookie、URL等关键参数不能直接获取,应缓存到服务器端的会话中并通过会话获取}}
|
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
@ -0,0 +1,29 @@ |
|||||||
|
/* |
||||||
|
* Copyright (c) 2023 - 2024. KeyWare.Co.Ltd All rights reserved. |
||||||
|
* 项目名称:信息安全性设计准则检查插件 |
||||||
|
* 项目描述:用于检查源代码的安全性设计准则的Sonarqube插件 |
||||||
|
* 版权说明:本软件属北京关键科技股份有限公司所有,在未获得北京关键科技股份有限公司正式授权情况下,任何企业和个人,不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。 |
||||||
|
*/ |
||||||
|
|
||||||
|
package com.keyware.sonar.java.rules.checkers; |
||||||
|
|
||||||
|
import com.keyware.sonar.java.utils.FilesUtils; |
||||||
|
import org.junit.jupiter.api.Test; |
||||||
|
import org.sonar.java.checks.verifier.CheckVerifier; |
||||||
|
|
||||||
|
/** |
||||||
|
* TODO SessionCacheParamsCheckerTest |
||||||
|
* |
||||||
|
* @author RenFengJiang |
||||||
|
* @date 2024/1/24 |
||||||
|
*/ |
||||||
|
public class SessionCacheParamsCheckerTest { |
||||||
|
@Test |
||||||
|
public void test() { |
||||||
|
CheckVerifier.newVerifier() |
||||||
|
.onFile("src/test/files/SessionCacheParamsChecker.java") |
||||||
|
.withCheck(new SessionCacheParamsChecker()) |
||||||
|
.withClassPath(FilesUtils.getClassPath("target/test-jars")) |
||||||
|
.verifyIssues(); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue