微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel提高安全性

前言

最近在LaravelChina看到一篇被黑客模拟token登录帖子,感觉非常触目惊心,原来黑客有这么多方式攻破服务器,所以记录一下这个问题下面一些比较好的评论,能够让laravel更安全的一些必要事情

 

服务器

1 关闭数据库远程链接端口,数据库链接走内网; 2 后台 ip 白名单机制 3 生成 token 时加上 ip, 若 ip 不一致则 token 失效 4 ssh 采用跳板机登陆 5 敏感操作需要谷歌 GA 验证,后台敏感操作只能是指定用户 基本上,除非服务器被攻破,就算客户账号密码被泄露,绑定了谷歌 GA. 大多数情况下也不会发生事故

 

微信验证

也有提现功能,提现只能提现微信钱包,提现必须实名认证,认证的时候微信会校验微信号,手机号,身份证是否匹配,不匹配认证不过的,认证不过不能提现,认证通过提现也要后台审核(前面的微信已经确定是本人了,后面这个其实不做也没太大关系)。

 

进一步加密

在 jwt payload 中加入自定义 key,value 为用户的 ip + 浏览器 UA 信息(只要能识别用户的唯一信息的字段都可以),然后对其进行加密保存(使用 laravel 自带 HASH 加密),使用全局中间件,获取登录用户的 payload 自定义 key,并获取用户的 IP+UA 信息 进行验签,验签不通过视为非法用户

 

避免sql注入

当你使用 Eloquent 查询时,如:

User::where('name', $input_name)->first();
copy
Eloquent 内部使用的是 PDO 参数绑定,所以你的请求是安全的。虽然如此,在一些允许你使用原生 sql 语句的地方,还是要特别小心,例如 whereRaw 或者 selectRaw 。如下:

User::whereRaw("name = '$input_name'")->first();
以上这段代码里是存在安全漏洞的,请尽量避免使用原生查询语句。如果你有必须使用原生语句的情况,语句里又包含用户提交内容的话,可以利用其提供的,类似于 PDO 参数绑定进行传参,以避免 sql 注入的风险:

User::whereRaw("name = ?", [$input_name])->first();

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。