您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“HTML怎么處理跨站腳本攻擊”,內容詳細,步驟清晰,細節處理妥當,希望這篇“HTML怎么處理跨站腳本攻擊”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
跨站腳本攻擊(XSS)是網站制作中最常見的漏洞之一。原理非常簡單,就是在用戶輸入一些代碼,這些代碼會導致瀏覽器執行一些腳本,從而達到攻擊目的。
這些攻擊性代碼通常要使用" < >來達到攻擊目的。
比如:您搜索的內容是: ${question},其中${question}是用戶輸入的內容。
如果用戶輸入<script>alert(1);</script>,這時頁面會就執行這段腳本代碼。
或者您的搜索內容是 <input type="text" value="${question}">,如果用戶輸入" onclick="alert(1);。
最終頁面為您的搜索內容是 <input type="text" value="" onclick="alert(1);">,此時點擊這個輸入框會觸發onclick事件,從而達到攻擊目的。
由此可知處理" ' < >等特殊字符,是防止跨站腳本攻擊(XSS)攻擊的關鍵。可以通過HTML轉義來處理這些問題,HTML轉義會將" ' < >轉義為" ' < >,從而防止這些攻擊。
FreeMarker HTML轉義:${username?html}。
如上例,不應在頁面直接輸出用戶輸入的內容,而應先轉義再輸出。如:
您搜索的內容是: ${question?html}
您的搜索內容是 <input type="text" value="${question?html}">
跨站腳本攻擊(XSS)無處不在,每個變量都需要小心的加上轉義代碼,容易遺漏。FreeMarker提供了一種對整個頁面一次性加上轉義的方法。
為了避免跨站腳本攻擊(XSS),通常會對輸出的內容做HTML轉義,比如${foo?html}。但是所有變量都要做這個轉義不僅麻煩,還容易遺忘。另外FreeMarker空值處理也很麻煩且容易遺忘,比如${foo!}、${(user.username)!}。
使用excape標簽可以很好的解決這個問題。
[#escape x as (x)!?html] ... ${user.username} ... [/#escape]
只要被這個標簽包含的代碼,都相當于加上了${(foo.bar)!?html},如${user.username}相當于${(user.username)!?html}。即包含了空值處理,也包含了HTML轉義處理。
在escape標簽內有對象不需要轉義時,可以用noescape標簽。
[#escape x as (x)!?html] ... [#noescape]${text}[/#noescape] ... [/#escape]
注意事項:必須對所有頁面都加上轉義代碼,包括包含文件。比如頁面A加上了escape轉義代碼并不代表這個頁面可以高枕無憂,如果頁面A中使用include標簽包含了頁面B,而頁面B中并沒有加escape轉義代碼,則仍然有跨站腳本攻擊(XSS)的風險。應該在頁面B也加入escape轉義代碼。最為常見的是分頁模板page.html和提示頁模板sys_operation_***.html沒有加上轉義代碼,分頁模板可能被很多頁面包含。
“我加了轉義代碼,可是檢測軟件任然報告有XSS漏洞”。這時應該查看詳細的報告信息,看看哪個頁面哪行代碼出現XSS漏洞,然后再針對該代碼進行HTML轉義處理。所有的XSS漏洞都必須依賴之前所說的" ' < >等特殊字符,而HTML轉義必然可以處理這個問題。不存在幽靈式的XSS漏洞,不存在“不知道哪里有XSS漏洞,反正就是有”。
讀到這里,這篇“HTML怎么處理跨站腳本攻擊”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。