SQL别直接拼用户输入,有注入漏洞分分钟被拖走整个数据库,预编译就搞定

9年前 (2018-04-14)阅读1回复0
genmulu
genmulu
  • 管理员
  • 注册排名1
  • 经验值27950
  • 级别管理员
  • 主题5590
  • 回复0
楼主

新手写PHP,直接把用户输入拼进SQL语句,结果被人在参数里拼SQL,直接拖走整个数据库,其实SQL注入防护就几个基础点,几行代码就能挡住大部分攻击。第一,所有数据库查询用PDO预编译,别直接把用户输入拼进SQL字符串里,预编译会自动转义特殊字符,用户输入的SQL代码只会被当成普通字符串,不会被数据库执行;第二,别直接用用户传的表名、字段名当查询条件,必须写死在代码里,或者做白名单校验,不然用户传的恶意参数直接拼进SQL;第三,数据库账号别用root,给网站单独建个只给对应库权限的账号,就算被注入,攻击者也碰不到其他库的数据;第四,生产环境关错误提示,不然报错直接把SQL语句、表结构暴露给用户,攻击者顺着报错信息找漏洞。

我之前写查询接口,直接拼用户输入,被人在参数里传SQL,差点把整个用户表拖走,之后所有查询全用PDO预编译,再也没出过SQL注入的问题。很多新手觉得小站没人会注入,结果黑产的脚本是全网扫的,你代码里有注入漏洞,分分钟被拖库。真的,写查询用预编译,别拼字符串,几行代码的事,能挡住90%的SQL注入攻击。

本站源码来源于网络收集修改或者交换,甚至可能并非原创,如遇未经考证信息需持审慎态度。若有疑问,可联系本站处理。

本文地址:https://www.genmulu.cn/genmulu/3296.html

0
回帖

SQL别直接拼用户输入,有注入漏洞分分钟被拖走整个数据库,预编译就搞定 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息