开源SQL注入可视化演示项目|GitHub Pages+Netlify双平台免费部署教程

开源SQL注入可视化演示项目|GitHub Pages+Netlify双平台免费部署教程

文章目录

  • [开源SQL注入可视化演示项目|GitHub Pages+Netlify双平台免费部署教程](#开源SQL注入可视化演示项目|GitHub Pages+Netlify双平台免费部署教程)

一、项目简介

最近做了一个纯教学向 SQL注入对比演示开源项目 ,专门用来新手入门理解:拼接SQL漏洞 vs 参数化查询防御。

项目特点:

  • ✅ 双表单对比:不安全拼接表单 + 安全参数化表单

  • ✅ 实时展示最终执行SQL语句,直观看懂注入原理

  • ✅ 支持经典Payload:admin' --、' OR '1'='1

  • ✅ 完整原理讲解页面,适合学习、答辩、作业演示

  • ✅ 同时支持 GitHub Pages + Netlify 双平台免费在线部署

开源地址:https://github.com/dxiangwiki/sql-inject-demo

线上演示地址(双平台已全部部署完成):

二、项目功能与核心原理

1. 不安全表单(存在SQL注入漏洞)

模拟后端直接字符串拼接SQL,也是绝大多数注入漏洞的根源。

原始拼接模板:

Plain 复制代码
SELECT * FROM user WHERE username='${username}' AND password='${password}'

经典Payload 1:admin' --

拼接后:

Plain 复制代码
SELECT * FROM user WHERE username='admin' -- ' AND password='xxx'

原理 :单引号闭合前面SQL,-- 注释后续所有密码校验语句,直接绕过登录。

经典Payload 2:' OR '1'='1

构造永真条件,无论账号密码对错,永远登录成功。

2. 安全表单(参数化查询防御)

采用标准防御方案:参数化预编译 SQL ,使用 ? 占位符。

Plain 复制代码
SELECT * FROM user WHERE username=? AND password=?

核心关键点:

用户输入永远只作为普通字符串数据,不会被解析为SQL语法,单引号、注释符全部失效,彻底杜绝注入。

3. 前端模拟执行逻辑(教学设计)

本项目前端通过 JS 模拟 SQL 条件解析,将 SQL 的 AND / OR 转换为 JS 的 && / ||,同时识别 SQL 注释,完美复现真实注入效果,适合学习演示,不依赖后端也能跑通所有漏洞场景。

三、双平台免费部署方案(Pages + Netlify)

本项目最终采用 仓库根目录部署,彻底解决跳转、缓存、路径错乱问题,两个平台地址干净、无跳转、可直接访问首页。

1. GitHub Pages 部署配置

设置路径:仓库 Settings → Pages

  • 部署分支:main

  • 部署目录:Root(根目录)

优势:免费、稳定、适合静态教学页面展示。

2. Netlify 部署配置(重点避坑)

很多人遇到:部署后自动跳转、地址栏带/public、缓存不更新。

最终稳定正确配置:

  • Build command:留空(不执行构建)

  • Publish directory:. (根目录部署)

  • 部署分支:main

解决卡顿/缓存不更新:

后台 Deploys → Trigger deploy → Deploy project without cache 清缓存重部署。

四、踩坑总结(全网通用静态页部署经验)

坑1:public目录导致双平台配置不一致

早期用 public 存放页面,Netlify 需要配置 public,GitHub Pages 需要跳转文件,导致地址跳转、维护两份代码。

最终最优解 :页面全部移到仓库根目录,统一部署,一份代码双平台通用。

坑2:Netlify 缓存导致改代码不生效

同一 commit 哈希会复用旧构建产物,改配置不刷新页面,必须清缓存部署。

坑3:SQL AND 关键字导致正常账号登录失败

前端模拟SQL条件时,SQL的 AND 不能直接用于JS,必须替换为 &&,否则正常账号密码报错、注入反而成功。

五、本地后端环境(拓展)

项目附带完整 Node+Express+MySQL 后端代码,可本地搭建真实漏洞环境:

  1. 创建 testdb 数据库与 user 表

  2. 插入测试账号 admin/123456

  3. 安装依赖 npm i express mysql2

  4. 启动 node server.js

可真实复现后端 SQL 拼接漏洞与参数化防御对比。

六、总结与学习价值

这个开源项目非常适合网络安全、Web 入门学习者:

  • 直观看懂 为什么会产生SQL注入

  • 彻底理解 参数化查询为什么能防御

  • 掌握经典注入Payload原理

  • 学会 GitHub Pages + Netlify 双平台免费静态页部署

七、开源地址 & 在线演示

GitHub:https://github.com/dxiangwiki/sql-inject-demo

Pages 在线演示:https://dxiangwiki.github.io/sql-inject-demo/

Netlify 在线演示:https://sql-inject-demo.netlify.app/

欢迎 Star、fork、学习使用,适合课堂演示、作业、入门练习。

相关推荐
终端安全笔记20 小时前
下一个大版本要动的三处:更新指令、传输要求、策略写法
网络安全·ios·1024程序员节·移动设备管理
愤怒火龙果1 天前
AI 渗透测试智能体架构综述:从单兵到蜂群的演进图谱
人工智能·网络安全·架构
学逆向的1 天前
C 枚举变量
c语言·开发语言·网络安全
QZ166560951592 天前
数据库监测的主动防御:实时感知,看见即掌控
网络·安全·网络安全
kingx32 天前
BugKu 渗透测试4 Writeup:从 eval 注入到五层内网拿满 Flag
人工智能·网络安全·网络攻击模型·安全威胁分析·1024程序员节
愤怒火龙果2 天前
AIShield 靶场 WP
人工智能·网络安全·1024程序员节
sbjdhjd2 天前
从黑板事实到长链路剪枝:AI 渗透测试 Agent 的实验、失效与改造
人工智能·网络安全·数据挖掘·php·agent·剪枝·1024程序员节
TechWayfarer2 天前
PHP漏洞被利用,怎么揪出攻击IP?
开发语言·python·tcp/ip·网络安全·php
终端安全笔记2 天前
一份配置管十项 AI 功能:它关的是入口,不是数据
网络安全·ios·移动设备管理
学逆向的3 天前
C 多文件开发
c语言·开发语言·网络安全