1. 程式人生 > >驗證碼以及Cookie和Session機制

驗證碼以及Cookie和Session機制

1、驗證碼的作用

防止機器暴力破解使用者名稱和密碼(或者是其他可以多次提交的表單)。因此為了安全起見,通常驗證碼的驗證並不會交由前端來進行,而是由後端來進行檢驗。同時驗證碼的樣子也會盡量千奇百怪,讓機器不能夠識別。

2、驗證碼的機制

前端:前端網頁通過一個URL來對後端進行請求,通常會給這個請求帶上一個時間戳或者是隨機數。
後端:接收到前端的request,後端會先生成一個隨機數(通常4位),然後把該隨機數存到與該客戶端的session裡面。隨後把該隨機數影象處理一下,變得讓機器難以識別。隨後把圖片(jpg或者png)直接傳送到前端(response)。

ps:前端想獲得隨機數的值,如果是模板型網頁(如jsp、php、asp等)可以在伺服器端訪問session來獲取值。而如果是RESTfulAPI型的,就只能通過ajax對伺服器進行請求來獲得值了。

3、Cookie機制

通常而言,Cookie是在瀏覽器的本地儲存。
Cookie儲存的內容有Key\Value對,主機、路徑、過期時間和傳送條件。
Cookie使用js也是可以獲得的

document.cookie

而原生的設定cookie的方法如下:

document.cookie =“abe=124;Max-age=1100;”

而每一次對相應站點發出request的時候,瀏覽器也會發送相應的cookie字串。伺服器可以根據傳送來的cookie進行對客戶的會話跟蹤。然而,因為http的傳輸時不加密的,因此傳送出去的cookie容易被截獲,同時,如果cookie過多的話,也會對網路造成負擔。

4、伺服器端Session的機制

而Session則是伺服器端對某個客戶端的資料儲存。Session和Cookie的不一樣是他把需要的資訊儲存在了伺服器端,在每一次的http傳輸中並不需要傳輸這些資訊。這樣一來,在伺服器端儲存資訊達到了安全的效果,同時減少了每一次http傳輸也達到了效能優化的效果。(現在cookie更多是用來作為本地持久化儲存資訊,而不是用於跟蹤使用者對話)

Ps:話說,打字不容易……用空給我點個贊留個言唄~

參考資料: