CodeQL 文档

以明文形式记录敏感信息

ID: go/clear-text-logging
Kind: path-problem
Security severity: 7.5
Severity: error
Precision: high
Tags:
   - security
   - external/cwe/cwe-312
   - external/cwe/cwe-315
   - external/cwe/cwe-359
Query suites:
   - go-code-scanning.qls
   - go-security-extended.qls
   - go-security-and-quality.qls

点击查看 CodeQL 存储库中的查询

未加密记录的敏感信息可供访问日志的攻击者访问。

建议

确保在记录敏感信息之前始终对其进行加密或混淆处理。

通常,仅在必须以明文形式使用敏感信息时才对其进行解密。

请注意,外部进程通常会存储应用程序的标准输出和标准错误流,从而导致记录的敏感信息被存储。

示例

以下示例代码以明文形式记录用户凭据(在本例中为密码)

package main

import (
	"log"
	"net/http"
)

func serve() {
	http.HandleFunc("/register", func(w http.ResponseWriter, r *http.Request) {
		r.ParseForm()
		user := r.Form.Get("user")
		pw := r.Form.Get("password")

		log.Printf("Registering new user %s with password %s.\n", user, pw)
	})
	http.ListenAndServe(":80", nil)
}

相反,凭据应加密、混淆或完全省略

package main

import (
	"log"
	"net/http"
)

func serve1() {
	http.HandleFunc("/register", func(w http.ResponseWriter, r *http.Request) {
		r.ParseForm()
		user := r.Form.Get("user")
		pw := r.Form.Get("password")

		log.Printf("Registering new user %s.\n", user)

		// ...
		use(pw)
	})
	http.ListenAndServe(":80", nil)
}

参考文献

  • M. Dowd、J. McDonald 和 J. Schuhm,软件安全评估的艺术,第 1 版,第 2 章 -“加密的常见漏洞”,第 43 页。Addison Wesley,2006 年。

  • M. Howard 和 D. LeBlanc,编写安全代码,第 2 版,第 9 章 -“保护机密数据”,第 299 页。Microsoft,2002 年。

  • OWASP:明文存储密码

  • 常见弱点枚举:CWE-312

  • 常见弱点枚举:CWE-315

  • 常见弱点枚举:CWE-359

  • ©GitHub, Inc.
  • 条款
  • 隐私