找回密码
 加入怎通
查看: 443|回复: 2

Python 之 MySql“未解之谜”16 -- sql 注入的风险_python3format函数

[复制链接]
我来看看 发表于 2023-03-26 22:28:02 | 显示全部楼层 |阅读模式
" l0 O3 u/ Q3 B; X! }0 |+ N6 j" C

一、Python 使用 Mysql1、Python 代码:

8 ^; D9 x Q+ \+ H$ L# f

2、Python 输出结果:

" N; ^" }! A/ H n x* s

3、分析① 当用户名和密码正确时,发现可以正常打印字段数据

' d4 J0 k4 j" Z1 V, `5 `

② 当用户名或密码错误时,输出“账号或密码错误”

' A" I, B& @* V& m% ?4 ]

③ 当用户名输入"python -- Python大星到此一游",密码为空,仍然可以正常打印数据

( o- k/ Q5 ~" C5 m& ~% ?

④ 当用户名输入"**** or 1 = 1 -- Python大星到此一游",密码为空,打印了所有用户信息

& u& ~7 m0 Y) z% {& \. @# c' @

其中第 ③ 和 ④ 条就是由于 加上 -- 注释 ,sql 注入导致的4、优化execute可以自动识别sql语句中的 %s ,它可以帮助你过滤特殊的字符,避免sql注入的问题

/ H& C+ U( _4 {

输出结果二、如何防止 sql 注入1、永远不要信任用户的输入对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双 - 进行转换等2、 永远不要使用动态拼装 sql可以使用参数化的 sql 或者直接使用存储过程进行数据查询存取。

# K* B8 V& l5 V, A

3、永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接4、不要把机密信息直接存放加密或者 hash 掉密码和敏感的信息5、应用的异常信息应该给出尽可能少的提示最好使用自定义的错误信息对原始错误信息进行包装

9 a: Q. [0 z: Y7 q \1 I2 x9 d$ r

>>>ython 之 MySql“未解之谜”15--DDL、DML、DCL和TCL都是啥?

2 V* e3 r5 C, v6 Z1 ^: f 5 \: i" D3 H! e7 Z+ \+ W5 f* L) \0 g/ B6 M, c + s9 }+ k% |6 e# g9 M) f( f8 k4 ^& a * n, U5 A4 s0 S, m' v
回复

使用道具 举报

幸福的蚂蚁 发表于 2025-11-10 03:46:07 | 显示全部楼层
完全赞同,我也是这么认为的,英雄所见略同~
回复 支持 反对

使用道具 举报

cq1779784001 发表于 2026-03-07 10:31:22 | 显示全部楼层
楼主辛苦了,整理这么多内容,必须点赞收藏
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入怎通

本版积分规则

QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

GMT+8, 2026-3-14 22:30 , Processed in 0.078332 second(s), 27 queries , Gzip On.

免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表