当前位置: 首页 > news >正文

使用绑定参数以防止SQL注入攻击

说明

日期:2025年6月6日。

有以下查询需求:

SELECT * FROM users WHERE email ='billy@gmail.com' 
AND encrypted_password ='$10$WMT9Y' 

web应用实现代码:

Connection connection= DriverManager. getConnection(DB_URL, DB_USER, DB_PASSWORD);
Statement statement = connection. createStatement (); 
String sql ="SELECT* FROM users WHERE email='"+ email+ 
"'AND encrypted _password="'+ password + " " ' ;statement.executeQuery(sql);

用户传送billy@gmail.com'--即可进行攻击,实现无密码登录:

statement .executeQuery( 
"SELECT * FROM users WHERE email='billy@gmail.com'--'AND encrypted_ 
password= 'Z$DSA92HO'");

示例

日期:2025年6月6日。
应用:

  • node.js v22.15.1
  • npm v11.4.1
  • sqlite3 --version:3.45.1 2024-01-30
async function queryDatabase(dbName, sql, params) {// 创建数据库连接并等待打开const db = await new Promise((resolve, reject) => {const database = new sqlite3.Database(dbName, (err) => {if (err) return reject(err);resolve(database);});});try {// 执行参数化查询const results = await new Promise((resolve, reject) => {db.all(sql, params, (err, rows) => {if (err) return reject(err);resolve(rows);});});return results;} finally {// 始终尝试关闭数据库连接await new Promise((resolve, reject) => {db.close((err) => {if (err) {console.error('Database close fail: ', err.message);reject(err);} else {resolve();}});}).catch(() => { /* 已记录错误,无需处理 */ });}
}const certNumber = '1234567';
results = await queryDatabase('CERTIFICATE.DB', 'SELECT * FROM CERTIFICATE WHERE NUM = ? LIMIT 1;', [certNumber]);

相关文章:

  • SpringBoot自动配置原理深度解析
  • Flutter:下拉框选择
  • 【Linux 学习计划】-- 进程程序替换
  • 硅基计划2.0 学习总结 陆 抽象类与接口
  • JavaWeb笔记
  • MySQL查询语句
  • pikachu靶场通关笔记17 CSRF关卡03-CSRF(Token)
  • [蓝桥杯]矩阵翻硬币
  • maven微服务${revision}依赖打包无法识别
  • 王自如走上了罗永浩的老路
  • 使用VTK还是OpenGL集成到qt程序里哪个好?
  • 马氏链(Markov Chain Model)模型知识详解(1)
  • 使用 espeak-ng 实现文本转语音
  • 基于 Vue 和 Spring Boot 实现滑块验证码的机器验证
  • Qwen2.5-VL - FFN(前馈神经网络)Feedforward Neural Network
  • Java持久层技术对比:Hibernate、MyBatis与JPA的选择与应用
  • npm error Cannot read properties of null (reading ‘matches‘)
  • mamba架构和transformer区别
  • 使用Python和TensorFlow实现图像分类
  • Qemu arm操作系统开发环境
  • 深圳做网站-信科网络/广告联盟app下载官网
  • 京东怎么做轮播图链接网站/排超最新积分榜
  • 私人做网站有什么用/沧州网站seo
  • 如何自己做网站发布到服务器上面/合肥网络seo推广服务
  • 网站设计评价指标/在线生成个人网站免费
  • 区政府网站自查整改和制度建设/网络营销课程速成班