文章详情页
mysql - 看这条sql有可能被注入吗
浏览:257日期:2022-06-20 14:00:12
问题描述
SELECT * FROM table1 where condition1=1 ORDER BY $sortField$ $sortOrder$ limit 0,20
$sortField$和$sortOrder$可以写任意sql
这条sql有被注入的风险吗
问题解答
回答1:只要你直接用变量来生成sql语句,都有被注入的风险
SELECT * FROM table1 where condition1=1 ORDER BY $sortField$ $sortOrder$ limit 0,20
sortField='id'sortOrder='; drop table users; --'
你的sql就会变成
SELECT * FROM table1 where condition1=1 ORDER BY id; drop table users; -- limit 0,20回答2:
你考虑问题的方向不正确。
防注入的正确做法是使用官方驱动的参数模式,因为只有官方自己的东西,才知道应该怎样避免被注入。
如果你自己写SQL,就算现在不被注入,说不定这条链路中所涉及的组件,在以后其中某个组件发生变化,那就会有被注入的风险。
回答3:你直接可以拿sqlmap测试一下,它的引擎还是很强大的
相关文章:
1. vim中编辑HTML文件时换行不能缩进2. git - 在web应用分布式部署的情况下怎么进行配置更新3. javascript - Ajax返回json格式之后的数据解析后取出来的数据为undefined?4. 前端 - WebStrom安装了angularjs插件,但是没有语法提示5. 网页爬虫 - 关于Python的编码与解码问题6. css - 文字排版问题,内容都是动态抓出来的,字数不一定。如何对齐啊7. css3 - 微信前端页面遇到的transition过渡动画的bug8. python - django里使用requests请求问题9. redis - 究竟是选择微信小程序自带的统计工具还是自己开发一个数据统计的代码?10. python3.x - 我把3.6的卸载了,也重启了,但是在cmd用python -V指令查看版本时,还是提示下图的python3.6
排行榜

网公网安备