mcpField
S
sql-injection-prevention

sql-injection-prevention

github.com/aj-geddes安全373529 次安装34 周前更新
代码仓库

关于 sql-injection-prevention

用于防范 SQL 注入的安全技能,涵盖预处理语句、参数化查询、ORM 实践与输入验证,并提供 Node.js、Python 和 Java 的实现参考。

主要功能

  1. 01预处理语句指南
  2. 02参数化查询实践
  3. 03ORM 使用指南
  4. 04输入验证与净化
  5. 05动态值白名单
  6. 06分语言实现参考

适用场景

  1. 01保障数据库查询开发安全
  2. 02审查旧代码中的注入风险
  3. 03修复安全审计发现的问题
  4. 04保护处理用户输入的 API 端点

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill sql-injection-prevention

安装后在 Claude Code 中输入/sql-injection-prevention确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
input-validation-sanitization.md
java-jdbc-with-prepared-statements.md
nodejs-with-postgresql.md
python-with-sqlalchemy-orm.md
scripts/
validate-schema.sh
templates/
migration-template.sql

详细介绍

SQL 注入防护

目录

概述

使用预处理语句、参数化查询、ORM 最佳实践和输入验证,全面防止 SQL 注入。

适用场景

  • 数据库查询开发
  • 遗留代码安全审查
  • 安全审计问题修复
  • API 端点开发
  • 用户输入处理
  • 动态查询生成

快速入门

最小可运行示例:

// secure-db.js
const { Pool } = require("pg");

class SecureDatabase {
  constructor() {
    this.pool = new Pool({
      host: process.env.DB_HOST,
      database: process.env.DB_NAME,
      user: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
      max: 20,
      idleTimeoutMillis: 30000,
      connectionTimeoutMillis: 2000,
    });
  }

  /**
   * ✅ SECURE: Parameterized query
   */
  async getUserById(userId) {
    const query = "SELECT * FROM users WHERE id = $1";
    const values = [userId];

    try {
      const result = await this.pool.query(query, values);
// ... (see reference guides for full implementation)

参考指南

references/ 目录中的详细实现:

指南内容
Node.js with PostgreSQLNode.js 与 PostgreSQL
Python with SQLAlchemy ORMPython 与 SQLAlchemy ORM
Java JDBC with Prepared StatementsJava JDBC 与预处理语句
Input Validation & Sanitization输入验证与清理

最佳实践

✅ 应该
  • 始终使用预处理语句
  • 正确使用 ORM 框架
  • 验证所有用户输入
  • 对动态值使用白名单
  • 使用遵循最小权限原则的数据库账号
  • 启用查询日志记录
  • 定期进行安全审计
  • 使用参数化查询
❌ 不应该
  • 拼接用户输入
  • 信任客户端验证
  • 使用字符串格式化构造查询
  • 允许动态表名或列名
  • 授予过多数据库权限
  • 跳过输入验证

评论

支持 Markdown