基于时间的SQL注入攻击会影响所有用户还是仅本人?
基于时间的SQL注入中sleep()对服务器可用性的影响
仅影响当前请求会话:如果网站采用请求独立分配数据库连接的模式,且数据库支持语句级sleep(比如MySQL的
sleep(20)),那这条sleep语句只会占用处理你请求的那一个数据库连接,让它休眠20秒。其他用户的请求会使用连接池里的其他连接,完全不受影响——服务器对其他用户依然正常响应,只有你的请求会等20秒才返回结果。极端情况下可能影响其他用户:
- 要是网站的数据库连接池配置过小,你的sleep请求刚好占了最后一个可用连接,后续用户的请求会因为拿不到数据库连接而进入等待队列,直到你的连接释放。
- 少数旧数据库引擎或不合理的配置下,若sleep语句之前有未提交的写操作,可能触发表级锁或全局锁,这时候其他访问同一张表的请求会被阻塞,直到锁被释放。
大部分现代网站的数据库架构(合理配置连接池、使用支持高并发的数据库引擎)里,单条sleep()注入语句只会影响发起请求的用户,不会导致整个网站对所有用户不可用。
内容的提问来源于stack exchange,提问作者Solo
相关产品推荐
相关产品推荐

