php 做手機簡訊驗證把驗證存在session中安全嗎
session 資料庫 快取
存哪裡裡面好點呢
温故而知新,可以为师矣。 博客:www.ouyangke.com
資料庫。 簡訊驗證碼要考慮幾個約束:1.多少秒之內同一個手機號不得再接收短信2.同一個ip一個時間段裡不能調用多少次,為了安全,或許你還需要加上一天之內短信不能超過多少條。 所以這些約束的實作用資料庫比較好。 session肯定不行。備註: 加上圖形驗證碼,不然介面容易遭受攻擊哦。
建議在cache 裡面 例如 redis memcached 都可以.cache 的效能比DB要的多
安全,因為session在伺服器上,客戶端看不到,至於session的儲存方式,可以預設檔案session,可以session入庫,還可以用記憶體來存,例如上面有人說的redis memcache等,也可以在linux下用自己寫的緩存,都行,效率和成本只能有一個,用緩存成本高,用資料庫效率低
但實際上,現在很少公司自己搞這個,都用第三方,流量低的網站第三方划算,流量高的網站,你還缺這點錢?
安全是相對的,你如果能保證cookie被竄改伺服器能發現就是安全的,這一點可以透過動態簽章來實現,動態簽章可以是value、key、time的hash,之後伺服器再對動態簽章進行驗證。不過一般這個業務場景用redis等快取來實現比較方便,不建議用session,session的超時事件沒有快取好控制。
資料庫。 簡訊驗證碼要考慮幾個約束:1.多少秒之內同一個手機號不得再接收短信2.同一個ip一個時間段裡不能調用多少次,為了安全,或許你還需要加上一天之內短信不能超過多少條。 所以這些約束的實作用資料庫比較好。 session肯定不行。備註: 加上圖形驗證碼,不然介面容易遭受攻擊哦。
建議在cache 裡面 例如 redis memcached 都可以.
cache 的效能比DB要的多
安全,因為session在伺服器上,客戶端看不到,至於session的儲存方式,可以預設檔案session,可以session入庫,還可以用記憶體來存,例如上面有人說的redis memcache等,也可以在linux下用自己寫的緩存,都行,效率和成本只能有一個,用緩存成本高,用資料庫效率低
但實際上,現在很少公司自己搞這個,都用第三方,流量低的網站第三方划算,流量高的網站,你還缺這點錢?
安全是相對的,你如果能保證cookie被竄改伺服器能發現就是安全的,這一點可以透過動態簽章來實現,動態簽章可以是value、key、time的hash,之後伺服器再對動態簽章進行驗證。不過一般這個業務場景用redis等快取來實現比較方便,不建議用session,session的超時事件沒有快取好控制。