前端面试题之http/HTML/浏览器(二)
csrf和xss的網絡攻擊及防范?
答:
CSRF:跨站請求偽造,可以理解為攻擊者盜用了用戶的身份,以用戶的名義發送了惡意請求,比如用戶登錄了一個網站后,立刻在另一個tab頁面訪問量攻擊者用來制造攻擊的網站,這個網站要求訪問剛剛登陸的網站,并發送了一個惡意請求,這時候CSRF就產生了,比如這個制造攻擊的網站使用一張圖片,但是這種圖片的鏈接卻是可以修改數據庫的,這時候攻擊者就可以以用戶的名義操作這個數據庫,防御方式的話:使用驗證碼,檢查https頭部的refer,使用token
XSS:跨站腳本攻擊,是說攻擊者通過注入惡意的腳本,在用戶瀏覽網頁的時候進行攻擊,比如獲取cookie,或者其他用戶身份信息,可以分為存儲型和反射型,存儲型是攻擊者輸入一些數據并且存儲到了數據庫中,其他瀏覽者看到的時候進行攻擊,反射型的話不存儲在數據庫中,往往表現為將攻擊代碼放在url地址的請求參數中,防御的話為cookie設置httpOnly屬性,對用戶的輸入進行檢查,進行特殊字符過濾。
2.怎么看網站的性能如何?
答:
檢測頁面加載時間一般有兩種方式,一種是被動去測:就是在被檢測的頁面置入腳本或探針,當用戶訪問網頁時,探針自動采集數據并傳回數據庫進行分析,另一種主動監測的方式,即主動的搭建分布式受控環境,模擬用戶發起頁面訪問請求,主動采集性能數據并分析,在檢測的精準度上,專業的第三方工具效果更佳,比如說性能極客。
3.介紹HTTP協議(特征)?
答:
HTTP是一個基于TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)HTTP是一個屬于應用層的面向對象的協議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統。它于1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規范化工作正在進行之中,而且HTTP-NG(Next Generation of HTTP)的建議已經提出。HTTP協議工作于客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求。Web服務器根據接收到的請求后,向客戶端發送響應信息。
4.輸入URL到頁面加載顯示完成發生了什么?
答:
DNS解析
TCP連接
發送HTTP請求
服務器處理請求并返回HTTP報文
瀏覽器解析渲染頁面
連接結束
5.說一下對Cookie和Session的認知,Cookie有哪些限制?
答:
1.cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
2.cookie不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙
考慮到安全應當使用session。
3.session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能
考慮到減輕服務器性能方面,應當使用COOKIE。
4.單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。
6.描述一下XSS和CRSF攻擊?防御方法?
答:
XSS, 即為(Cross Site Scripting), 中文名為跨站腳本, 是發生在目標用戶的瀏覽器層面上的,當渲染DOM樹的過程成發生了不在預期內執行的JS代碼時,就發生了XSS攻擊。大多數XSS攻擊的主要方式是嵌入一段遠程或者第三方域上的JS代碼。實際上是在目標網站的作用域下執行了這段js代碼。
CSRF(Cross Site Request Forgery,跨站請求偽造),字面理解意思就是在別的站點偽造了一個請求。專業術語來說就是在受害者訪問一個網站時,其 Cookie 還沒有過期的情況下,攻擊者偽造一個鏈接地址發送受害者并欺騙讓其點擊,從而形成 CSRF 攻擊。
XSS防御的總體思路是:對輸入(和URL參數)進行過濾,對輸出進行編碼。也就是對提交的所有內容進行過濾,對url中的參數進行過濾,過濾掉會導致腳本執行的相關內容;然后對動態輸出到頁面的內容進行html編碼,使腳本無法在瀏覽器中執行。雖然對輸入過濾可以被繞過,但是也還是會攔截很大一部分的XSS攻擊。
防御CSRF 攻擊主要有三種策略:驗證 HTTP Referer 字段;在請求地址中添加 token 并驗證;在 HTTP 頭中自定義屬性并驗證。
7.具體有哪些請求頭是跟緩存相關的?
答:
緩存分為兩種:強緩存和協商緩存,根據響應的header內容來決定。
強緩存相關字段有expires,cache-control。如果cache-control與expires同時存在的話,cache-control的優先級高于expires。
協商緩存相關字段有Last-Modified/If-Modified-Since,Etag/If-None-Match
8.cookie有哪些字段可以設置?
答:
name字段為一個cookie的名稱。
value字段為一個cookie的值。
domain字段為可以訪問此cookie的域名。
非頂級域名,如二級域名或者三級域名,設置的cookie的domain只能為頂級域名或者二級域名或者三級域名本身,不能設置其他二級域名的cookie,否則cookie無法生成。
頂級域名只能設置domain為頂級域名,不能設置為二級域名或者三級域名,否則cookie無法生成。
二級域名能讀取設置了domain為頂級域名或者自身的cookie,不能讀取其他二級域名domain的cookie。所以要想cookie在多個二級域名中共享,需要設置domain為頂級域名,這樣就可以在所有二級域名里面或者到這個cookie的值了。
頂級域名只能獲取到domain設置為頂級域名的cookie,其他domain設置為二級域名的無法獲取。
path字段為可以訪問此cookie的頁面路徑。比如domain是abc.com,path是/test,那么只有/test路徑下的頁面可以讀取此cookie。
expires/Max-Age 字段為此cookie超時時間。若設置其值為一個時間,那么當到達此時間后,此cookie失效。不設置的話默認值是Session,意思是cookie會和session一起失效。當瀏覽器關閉(不是瀏覽器標簽頁,而是整個瀏覽器) 后,此cookie失效。
Size字段 此cookie大小。
http字段 ?cookie的httponly屬性。若此屬性為true,則只有在http請求頭中會帶有此cookie的信息,而不能通過document.cookie來訪問此cookie。
secure?字段 設置是否只能通過https來傳遞此條cookie
9.除了cookie,還有什么存儲方式。說說cookie和localStorage的區別?
答:
還有localStorage,sessionStorage,indexdDB等
cookie和localStorage的區別:
cookie數據始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務器間來回傳遞
cookie數據還有路徑(path)的概念,可以限制。cookie只屬于某個路徑下
存儲大小限制也不同,cookie數據不能超過4K,同時因為每次http請求都會攜帶cookie,所以cookie只適合保存很小的數據,如回話標識。
localStorage雖然也有存儲大小的限制,但是比cookie大得多,可以達到5M或更大
localStorage始終有效,窗口或瀏覽器關閉也一直保存,因此用作持久數據;cookie只在設置的cookie過期時間之前一直有效,即使窗口和瀏覽器關閉。
10.HTML5和CSS3用的多嗎?你了解它們的新屬性嗎?有在項目中用過嗎?
答:
html5:
1)標簽增刪
8個語義元素 header p footer aside nav main article figure
內容元素mark高亮 progress進度
新的表單控件calander date time email url search
新的input類型 color date datetime datetime-local email
移除過時標簽big font frame frameset
2)canvas繪圖,支持內聯SVG。支持MathML
3)多媒體audio video source embed track
4)本地離線存儲,把需要離線存儲在本地的文件列在一個manifest配置文件
5)web存儲。localStorage、SessionStorage
css3:
CSS3邊框如border-radius,box-shadow等;CSS3背景如background-size,background-origin等;CSS3 2D,3D轉換如transform等;CSS3動畫如animation等。
注意:本文答案僅作為參考
關注公眾號,后臺回復“java高級進階”,免費獲取Java高級進階全套資料(分布式+微服務+技術文檔+簡歷模板)
總結
以上是生活随笔為你收集整理的前端面试题之http/HTML/浏览器(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端面试题之http/HTML/浏览器(
- 下一篇: 大前端最强vscode教程(基础篇)