国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Laravel 項目開發(fā)規(guī)范 Laravel 安全實踐

2023-02-16 17:12 更新

說明

沒有絕對安全,只有相對安全。Laravel 相較于其他框架在安全方面已經(jīng)做得很優(yōu)秀,不過作為開發(fā)者,我們要在日常開發(fā)中對『安全』需懷著敬畏之心,積極培養(yǎng)自己的安全意識。以下是一些 Laravel 安全相關(guān)的規(guī)范。

關(guān)閉 DEBUG

Laravel Debug 開啟時,會暴露很多能被黑客利用的服務(wù)器信息,所以,生產(chǎn)環(huán)境下請 必須 確保:

APP_DEBUG=false

XSS

跨站腳本攻擊(cross-site scripting,簡稱 XSS),具體危害體現(xiàn)在黑客能控制你網(wǎng)站頁面,包括使用 JS 盜取 Cookie 等,關(guān)于 XSS 的介紹請前往 IBM 文檔庫:跨站點腳本攻擊深入解析 。

默認情況下,在無法保證用戶提交內(nèi)容是 100% 安全的情況下,必須 使用 Blade 模板引擎的 {{ $content }} 語法會對用戶內(nèi)容進行轉(zhuǎn)義。

Blade 的 {!! $content !!} 語法會直接對內(nèi)容進行 非轉(zhuǎn)義 輸出,使用此語法時,必須 使用 HTMLPurifier for Laravel 5 來為用戶輸入內(nèi)容進行過濾。

SQL 注入

Laravel 的 查詢構(gòu)造器 和 Eloquent 是基于 PHP 的 PDO,PDO 使用 prepared 來準(zhǔn)備查詢語句,保障了安全性。

在使用 raw() 來編寫復(fù)雜查詢語句時,必須 使用數(shù)據(jù)綁定。

錯誤的做法:

Route::get('sql-injection', function() {
    $name = "admin"; // 假設(shè)用戶提交
    $password = "xx' OR 1='1"; // // 假設(shè)用戶提交
    $result = DB::select(DB::raw("SELECT * FROM users WHERE name ='$name' and password = '$password'"));
    dd($result);
});

以下是正確的做法,利用 select 方法的第二個參數(shù)做數(shù)據(jù)綁定:

Route::get('sql-injection', function() {
    $name = "admin"; // 假設(shè)用戶提交
    $password = "xx' OR 1='1"; // // 假設(shè)用戶提交
    $result = DB::select(
        DB::raw("SELECT * FROM users WHERE name =:name and password = :password"),
        [
            'name' => $name,
            'password' => $password,
        ]
    );
    dd($result);
});

DB 類里的大部分執(zhí)行 SQL 的函數(shù)都可傳參第二個參數(shù) $bindings

批量賦值

Laravel 提供白名單和黑名單過濾($fillable 和 $guarded),開發(fā)者 應(yīng)該 清楚認識批量賦值安全威脅的情況下合理靈活地運用。

批量賦值安全威脅,指的是用戶可更新本來不應(yīng)有權(quán)限更新的字段。舉例,users 表里的 is_admin 字段是用來標(biāo)識用戶『是否是管理員』,某不懷好意的用戶,更改了『修改個人資料』的表單,增加了一個字段:

<input name="is_admin" value="1" />

這個時候如果你更新代碼如下:

Auth::user()->update(Request::all());

此用戶將獲取到管理員權(quán)限。可以有很多種方法來避免這種情況出現(xiàn),最簡單的方法是通過設(shè)置 User 模型里的 $guarded 字段來避免:

protected $guarded = ['id', 'is_admin'];

CSRF

CSRF 跨站請求偽造是 Web 應(yīng)用中最常見的安全威脅之一,具體請見 Wiki - 跨站請求偽造 或者 Web 應(yīng)用程序常見漏洞 CSRF 的入侵檢測與防范。

Laravel 默認對所有『非冪等的請求』強制使用 VerifyCsrfToken 中間件防護,需要開發(fā)者做的,是區(qū)分清楚什么時候該使用『非冪等的請求』。

冪等請求指的是:’HEAD’, ‘GET’, ‘OPTIONS’,既無論你執(zhí)行多少次重復(fù)的操作都不會給資源造成變更。

  • 所有刪除的動作,必須 使用 DELETE 作為請求方法;
  • 所有對數(shù)據(jù)更新的動作,必須 使用 POST、PUT 或者 PATCH 請求方法。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號