写CMS别直接把URL参数拼进SQL,黑产爬虫24小时扫注入点,几秒拖走你整个库
新手写CMS的内容查询,直接把URL里的id、关键词拼进SQL里,后台都没发现漏洞,被黑产的爬虫扫到,几秒钟就把整个数据库的用户名密码全拖走了。其实防SQL注入,就几个基础实现,写完代码过一遍,就能挡住绝大多数注入攻击。第一,所有数据库查询,不管是查文章、查用户、查商品,全部用预编译参数绑定,别直接把用户传的id、关键词拼进SQL语句里,预编译会自动把特殊字符转义,根本没法注入;第二,用户传的id参数,先强制转成整数类型,比如GET传的id是字符串,你先intval()转成数字,不是数字直接返回404,那种带注入字符的字符串直接拦下来;第三,所有数据库操作的账号,只给对应库的读写权限,别用root账号,就算真的被注入了,攻击者也拿不到整个数据库服务器的权限;第四,别在前台页面报错信息里直接输出SQL错误,比如“查询失败:You have an error in your SQL syntax”,这种报错直接告诉攻击者数据库表结构,对方直接顺着注入点拖库,报错只记录到后台日志,前台给用户返回友好的404就行。
我之前写的博客查询,直接拼id参数,被人扫到注入点,差点把用户表拖走,改成预编译之后,再也没出现过注入的问题。很多新手觉得小站没人会扫,其实黑产的爬虫24小时全网扫注入点,你代码里有个小漏洞,几分钟就被人找到。这几个点写完代码顺手就做了,成本特别低,但是不做,哪天数据库被拖走,用户信息全没,再补救就晚了。
本站源码来源于网络收集修改或者交换,甚至可能并非原创,如遇未经考证信息需持审慎态度。若有疑问,可联系本站处理。
0