服务端开发需要注意的安全问题
「这是我参与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=falseXSS 跨站脚本攻击
XSS 的英文全称是:cross-site scripting 。翻译过来就是 跨站脚本攻击
如果被攻击的话,黑客能控制我们的页面,黑客能使用js盗用cookie等。
如何避免 XSS 攻击呢?
我们在无法保证用户提交内容是 100% 安全的情况下,必须 使用 Blade 模板引擎的 语法会对用户内容进行转义。
总结
安全问题无小事,一定要有安全开发的意识,养成良好的编程习惯。
避免SQL注入、XSS攻击等安全问题。
进一步思考
还有哪些需要注意的安全问题,小伙伴们可以在评论区讨论哦~
程序优化相关阅读推荐
最后
👍🏻:觉得有收获请点个赞鼓励一下!
🌟:收藏文章,方便回看哦!
💬:评论交流,互相进步!
