javascript具有安全性。JavaScript是一種安全性語言,它不允許訪問本地的硬盤,并不能將數(shù)據(jù)存入到服務(wù)器上,不允許對(duì)網(wǎng)絡(luò)文檔進(jìn)行修改和刪除,只能通過瀏覽器實(shí)現(xiàn)信息瀏覽或動(dòng)態(tài)交互;從而有效地防止數(shù)據(jù)的丟失。
前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
API 文檔、設(shè)計(jì)、調(diào)試、自動(dòng)化測(cè)試一體化協(xié)作工具:點(diǎn)擊使用
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
JavaScript(簡稱“JS”)是當(dāng)前最流行、應(yīng)用最廣泛的客戶端腳本語言,用來在網(wǎng)頁中添加一些動(dòng)態(tài)效果與交互功能,在 Web 開發(fā)領(lǐng)域有著舉足輕重的地位。
JavaScript 是一種采用事件驅(qū)動(dòng)的腳本語言,它不需要借助 Web 服務(wù)器就可以對(duì)用戶的輸入做出響應(yīng),例如我們?cè)谠L問一個(gè)網(wǎng)頁時(shí),通過鼠標(biāo)在網(wǎng)頁中進(jìn)行點(diǎn)擊或滾動(dòng)窗口時(shí),通過 JavaScript 可以直接對(duì)這些事件做出響應(yīng)。
JavaScript 不依賴操作系統(tǒng),在瀏覽器中就可以運(yùn)行。因此一個(gè) JavaScript 腳本在編寫完成后可以在任意系統(tǒng)上運(yùn)行,只需要系統(tǒng)上的瀏覽器支持 JavaScript 即可。
JavaScript是一種安全性語言,它不允許訪問本地的硬盤,并不能將數(shù)據(jù)存入到服務(wù)器上,不允許對(duì)網(wǎng)絡(luò)文檔進(jìn)行修改和刪除,只能通過瀏覽器實(shí)現(xiàn)信息瀏覽或動(dòng)態(tài)交互;從而有效地防止數(shù)據(jù)的丟失。
易于實(shí)現(xiàn)的5個(gè)JavaScript安全最佳實(shí)踐
1、使用 JavaScript linter
避免 JavaScript 安全問題的最簡單和最簡單的方法是檢查代碼。Linter 是靜態(tài)代碼分析工具,可檢查你的代碼是否存在編程和風(fēng)格錯(cuò)誤、代碼異味和已知的安全漏洞。
三種最著名的 JavaScript linter 是 JSHint、JSLint 和 ESLint。 現(xiàn)代源代碼編輯器,例如 Visual Studio Code 和 Atom,也帶有可插入的 JavaScript linting 功能。
2、避免使用內(nèi)聯(lián) JavaScript 并建立內(nèi)容安全策略
使用內(nèi)聯(lián)腳本標(biāo)簽會(huì)使你的網(wǎng)站或應(yīng)用程序更容易受到跨站點(diǎn)腳本 (XSS) 攻擊。 你可以通過將所有腳本(包括內(nèi)聯(lián)事件處理程序(例如 onclick))添加為外部 .js 文件來避免這種 JavaScript 安全風(fēng)險(xiǎn)。
為了提高安全性,我們還建議你建立內(nèi)容安全策略 (CSP)。 這是客戶端和服務(wù)器之間通信中的一個(gè)安全層,允許你向 HTTP 響應(yīng)標(biāo)頭添加內(nèi)容安全規(guī)則。
如果你的頁面上沒有任何內(nèi)聯(lián)腳本,則設(shè)置更有效的 CSP 會(huì)更容易。 你可以使用 script-src 和 default-src 指令來阻止所有內(nèi)聯(lián)腳本,因此如果任何惡意內(nèi)聯(lián)腳本試圖在你的站點(diǎn)上執(zhí)行,它將自動(dòng)失敗。
3、驗(yàn)證用戶輸入
在客戶端和服務(wù)器端驗(yàn)證用戶輸入對(duì)于避免惡意代碼注入至關(guān)重要。
HTML5 表單帶有內(nèi)置的表單驗(yàn)證屬性,例如 required、min、max、type 等,讓你無需在客戶端使用任何 JavaScript,即可檢查用戶數(shù)據(jù)并返回錯(cuò)誤消息。 你還可以使用模式 HTML 屬性通過正則表達(dá)式驗(yàn)證輸入的值。
除了這些 HTML5 屬性之外,現(xiàn)代瀏覽器還支持 Constraint Validation API,允許你使用 JavaScript 執(zhí)行自定義輸入驗(yàn)證。
這是一個(gè) Web API,它擴(kuò)展了屬于表單中使用的不同 HTML 元素(例如 HTMLInputElement、HTMLSelectElement 和 HTMLButtonElement)的 JavaScript 接口,并提供了有用的屬性和方法,用于根據(jù)不同的約束檢查輸入有效性、報(bào)告有效性狀態(tài)以及執(zhí)行其他操作。
4、轉(zhuǎn)義或編碼用戶輸入
為了避免 XSS 攻擊,對(duì)傳入或不安全的數(shù)據(jù)進(jìn)行轉(zhuǎn)義或編碼也很重要。轉(zhuǎn)義和編碼是將可能構(gòu)成安全風(fēng)險(xiǎn)的特殊字符轉(zhuǎn)換為安全形式的兩種技術(shù)。
雖然編碼會(huì)在潛在危險(xiǎn)字符之前添加一個(gè)額外字符,例如 JavaScript 中引號(hào)前的 字符,但轉(zhuǎn)義會(huì)將字符轉(zhuǎn)換為等效但安全的格式,例如將 > 字符轉(zhuǎn)換為 > HTML 中的字符串。
根據(jù)經(jīng)驗(yàn),當(dāng) HTML 實(shí)體(例如 < 和 > 字符)來自不受信任的來源時(shí),你應(yīng)該始終對(duì)其進(jìn)行編碼。要轉(zhuǎn)義 URI 和 JavaScript 代碼,你可以使用免費(fèi)的轉(zhuǎn)義/編碼工具,例如 FreeFormatter 的 JavaScript String Escaper 和 URL Encoder/Decoder。
最好避免使用返回未轉(zhuǎn)義字符串的 JavaScript 屬性和方法。例如,你可以使用安全 textContent 屬性而不是解析為 HTML 的 innerHTML(因此字符不會(huì)被轉(zhuǎn)義)。
5、壓縮、捆綁和混淆你的JavaScript代碼
最后,你可以使用 Webpack 等具有