Skip to content

服务端开发需要注意的安全问题

「这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战

安全问题和性能优化是开发过程中必须注意的问题

这篇文章整理汇总 Laravel 开发过程中的安全问题和程序优化问题

安全问题

SQL 注入

SQL注入 是服务端开发很常见的问题,Laravel 的 Eloquent 是基于PHP的PDO的,PDO 使用 prepared 来准备查询语句,保障了安全性。

注意也不是绝对安全的,我们使用 raw() 时要注意:必须使用数据绑定。

错误的做法:

ini
Route::get('xxxx', function() {     $name = "xxxx"; // 假设用户提交     $password = "xx' OR 1='1"; // // 假设用户提交     $result = DB::select(DB::raw("SELECT * FROM users WHERE name ='$name' and password = '$password'"));     dd($result); });

正确的做法,一定要使用数据绑定,不要直接拼接sql参数:

perl
Route::get('xxxx', function() {     $name = "xxxx"; // 假设用户提交     $password = "xx' OR 1='1"; // // 假设用户提交     $result = DB::select(         DB::raw("SELECT * FROM users WHERE name =:name and password = :password"),         [             'name' => $name,             'password' => $password,         ]     );     dd($result); });

生产环境关闭debug

在 .env配置文件中可以设置APP_DEBUG,本地开发和测试环境我们打开debug模式方便定位问题。

注意生产环境一定要关闭debug模式,避免暴露给黑客服务端信息

ini
APP_DEBUG=false

XSS 跨站脚本攻击

XSS 的英文全称是:cross-site scripting 。翻译过来就是 跨站脚本攻击

如果被攻击的话,黑客能控制我们的页面,黑客能使用js盗用cookie等。

如何避免 XSS 攻击呢?

我们在无法保证用户提交内容是 100% 安全的情况下,必须 使用 Blade 模板引擎的 语法会对用户内容进行转义。

总结

安全问题无小事,一定要有安全开发的意识,养成良好的编程习惯。

避免SQL注入、XSS攻击等安全问题。

进一步思考

还有哪些需要注意的安全问题,小伙伴们可以在评论区讨论哦~

程序优化相关阅读推荐

性能优化反思:不要在for循环中操作DB

性能优化反思:不要在for循环中操作DB 进阶版

最后

👍🏻:觉得有收获请点个赞鼓励一下!

🌟:收藏文章,方便回看哦!

💬:评论交流,互相进步!

🚀 学习遇到瓶颈?想进大厂?

看完这篇技术文章,如果还是觉得不够系统,或者想在实战中快速提升?
王中阳的就业陪跑训练营,提供定制化学习路线 + 企业级实战项目 + 简历优化 + 模拟面试。

了解训练营详情