在 CodeIgniter 4 中,esc() 函數是一個全域輔助函式,用於安全地輸出資料,以防止跨站腳本(XSS)攻擊。這個函式相當靈活,支援根據不同的程式語言(如 HTML、JavaScript、CSS 等)輸出資料,從而提供針對性的保護。

基本用法:

基本的 esc() 函數用法如下:

echo esc($data);

$data 是你想要輸出的資料。預設情況下,esc() 會將資料以 HTML 內容來輸出。

指定程式語言

如果你需要根據特定的程式語言輸出資料(例如,在 JavaScript 或 CSS 中輸出),你可以指定第二個參數來改變輸出行為:

echo esc($data, 'html');
echo esc($data, 'js');
echo esc($data, 'css');
echo esc($data, 'url');

在這裡,'html''js''css''url' 分別指示 esc() 函式根據不同的程式語言輸出資料。選擇正確的程式語言是重要的,因為不同的程式語言有不同的特殊字串和輸出需求。

使用 esc() 函式安全輸出到視圖

當你在 CodeIgniter 4 的視圖文件中輸出從用戶輸入或資料庫讀取的數據時,使用 esc() 函數可以確保這些數據不會導致 XSS 攻擊或破壞頁面布局:

 

// 在視圖中安全輸出用戶名
<?= esc($username, 'html') ?>

// 在 JavaScript 中安全使用變數
<script>
    let username = <?= esc($username, 'js') ?>;
</script>

// 在 CSS 中安全使用變數
<style>
    .user-profile {
        background-image: url('<?= esc($userProfileImage, 'url') ?>');
    }
</style>

 通過這樣的機制,CodeIgniter 4 幫助開發者減少 XSS 攻擊的風險,同時也使得在不同程式語言中安全地處理和輸出資料變得更加容易。