Skip to content

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

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

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

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

安全问题

SQL 注入

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

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

错误的做法:

sql
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参数:

sql
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模式,避免暴露给黑客服务端信息

sql
APP_DEBUG=false

XSS 跨站脚本攻击

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

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

如何避免 XSS 攻击呢?

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

总结

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

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

进一步思考

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

程序优化相关阅读推荐

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

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

最后

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

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

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

AI 应用开发训练营 · 现在开始

别只收藏 AI 文章,今天就做出第一个能上线的项目

文章解决认知,项目才证明能力。把 Agent、RAG、MCP 变成可运行、可展示、可面试表达的成果,现在就从一次岗位准备度自测开始。

立即开始 AI 岗位准备度自测 查看训练营路线
真实学员成果先看成果,再决定是否开始 →
  1. 01选方向
  2. 02做项目
  3. 03出成果
  4. 04拿面试