
- 如果真能駭入後端試算表伺服器,那 Google 會比我更擔心,這可是世界級的駭客實力
- 這個會員系統主要功用為,讓會員有權限看到我寫的一些工具程式碼,就算被破解導致內容被看到,我也沒什麼實質上的損失,本站的程式碼本來就是個人筆記用途
一、injection 注入攻擊
以 Google 試算表做為資料庫的情況,高端駭客手法就交給 Google 伺服器應對,我們要自行負責不被程式碼注入攻擊,無論是前端網頁或是後端 GAS。 這篇「身為 Web 工程師,你一定要知道的幾個 Web 資訊安全議題」,介紹了幾個常見的網頁攻擊手法,請參照該篇的範例,以下說明跟本文相關的部分: 1. Stored XSS XSS 是 Cross-site scripting(跨站指令碼攻擊) 的縮寫。 Stored XSS 是儲存型 XSS,利用網頁上的輸入欄位,輸入二、防止 injection 攻擊
1. 哪些特些字元需要預防 從前面的常見攻擊手法來看,針對 Google 試算表資料庫而言,一般 JS 前後端要防止程式碼注入攻擊,只要針對以下這 4 個特殊符號進行處理,駭客就沒搞頭了:" ' < >
2. 其他特殊字元
這篇「SQL Injection 的多種攻擊方式與防護討論」滿不錯的,提供了許多特殊字元建議站長針對資料庫安全逐一測試,不過這畢竟是 SQL 的環境。
至於 JS 環境,我想若是有某些程式碼使用了 eval(),那麼被偷偷塞入函數時是有可能被執行的,所以檢測過上面這篇提出的特殊字元,我建議也對以下這些符號進行處理,多做總比少做好:
= () {} ? + |
3. HTML Entity 編碼
這篇「HTML Entity 簡介」說明了對特殊字元進行 HTML Entity 編碼後,可在網頁上正常顯示符號。
舉例來說,左箭頭符號 三、範例程式碼
瞭解本文所有概念後,對於 Google 試算表資料庫防止 code injection,我們需要做的就是將前端使用者輸入的字串內容,以及後端接收的所有字串內容,針對某些特殊字元進行編碼,轉成 HTML Entity。 這個討論串「Encode HTML entities in JavaScript」提供了 JS 範例,以下為我整理過的程式碼:var reg = /["'<>=(){}?+|]/g, // 所有要轉換的特殊字元
inputStr = "這裡是使用者輸入的字串'<script>(function(){alert(\"你被駭了\")})()<\/script>", // 原始字串
newStr = htmlEntity(inputStr); // 轉譯字串
alert(newStr); // 彈跳視窗可看到轉譯字串
document.write(newStr); // 在網頁上呈現的轉譯字串
function htmlEntity(str) {
return str.replace(reg, function(i) {
return "&#" + i.charCodeAt(0) + ";";
});
}
轉譯後的字元可以安心存入後端資料庫,不會有任何危險。而前端顯示的轉譯字串,又能跟當初輸入時一模一樣,使用者不會察覺任何異狀。
更多 Google Apps Script 相關技巧:
沒有留言:
張貼留言注意事項:
◎ 勾選「通知我」可收到後續回覆的mail!
◎ 請在相關文章留言,與文章無關的主題可至「Blogger 社團」提問。
◎ 請避免使用 Safari 瀏覽器,否則無法登入 Google 帳號留言(只能匿名留言)!
◎ 提問若無法提供足夠的資訊供判斷,可能會被無視。建議先參考這篇「Blogger 提問技巧及注意事項」。
◎ CSS 相關問題非免費諮詢,建議使用「Chrome 開發人員工具」尋找答案。
◎ 手機版相關問題請參考「Blogger 行動版範本的特質」→「三、行動版範本不一定能執行網頁版工具」;或參考「Blogger 行動版範本修改技巧 」,或本站 Blogger 行動版標籤相關文章。
◎ 非官方範本問題、或貴站為商業網站,請參考「Blogger 免費諮詢 + 付費諮詢」
◎ 若是使用官方 RWD 範本,請參考「Blogger 推出全新自適應 RWD 官方範本及佈景主題」→ 不建議對範本進行修改!
◎ 若留言要輸入語法,"<"、">"這兩個符號請用其他符號代替,否則語法會消失!
◎ 為了過濾垃圾留言,所有留言不會即時發佈,請稍待片刻。
◎ 本站「已關閉自刪留言功能」。