45 lines
1013 B
Bash
45 lines
1013 B
Bash
|
|
#!/bin/bash
|
||
|
|
# Go 安全扫描脚本
|
||
|
|
# 使用 gosec 对代码进行安全扫描
|
||
|
|
#
|
||
|
|
# 使用方法:
|
||
|
|
# ./scripts/security/run-gosec.sh # 扫描所有代码
|
||
|
|
# ./scripts/security/run-gosec.sh ./internal # 扫描指定目录
|
||
|
|
#
|
||
|
|
# 依赖:
|
||
|
|
# go install github.com/securego/gosec/v2/cmd/gosec@latest
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
# 颜色输出
|
||
|
|
RED='\033[0;31m'
|
||
|
|
GREEN='\033[0;32m'
|
||
|
|
YELLOW='\033[1;33m'
|
||
|
|
NC='\033[0m' # No Color
|
||
|
|
|
||
|
|
SCAN_DIR="${1:-./...}"
|
||
|
|
OUTPUT_FILE="gosec-report.json"
|
||
|
|
|
||
|
|
echo -e "${YELLOW}Running gosec security scan...${NC}"
|
||
|
|
|
||
|
|
# 检查 gosec 是否安装
|
||
|
|
if ! command -v gosec &> /dev/null; then
|
||
|
|
echo -e "${RED}gosec not found. Installing...${NC}"
|
||
|
|
go install github.com/securego/gosec/v2/cmd/gosec@latest
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 运行 gosec
|
||
|
|
gosec -fmt json -out="${OUTPUT_FILE}" "${SCAN_DIR}"
|
||
|
|
|
||
|
|
# 检查返回码
|
||
|
|
RESULT=$?
|
||
|
|
|
||
|
|
if [ $RESULT -eq 0 ]; then
|
||
|
|
echo -e "${GREEN}No issues found!${NC}"
|
||
|
|
else
|
||
|
|
echo -e "${RED}Security issues detected!${NC}"
|
||
|
|
echo -e "${YELLOW}Report saved to: ${OUTPUT_FILE}${NC}"
|
||
|
|
fi
|
||
|
|
|
||
|
|
exit $RESULT
|