[英]Security Classic ASP
這足夠安全嗎? 我沒有使用經典ASP或VBScript的經驗。
我有一個經典的ASP頁,該頁接受表單數據並將其發送到另一個與數據庫建立連接的經典ASP頁。 我將其用於表單輸入頁面上的CSRF令牌:
<%
Dim token
token = CreateGUID()
Function CreateGUID()
Dim tmpTemp
tmpTemp = Right(String(4,48) & Year(Now()),4)
tmpTemp = tmpTemp & Right(String(4,48) & Month(Now()),2)
tmpTemp = tmpTemp & Right(String(4,48) & Day(Now()),2)
tmpTemp = tmpTemp & Right(String(4,48) & Hour(Now()),2)
tmpTemp = tmpTemp & Right(String(4,48) & Minute(Now()),2)
tmpTemp = tmpTemp & Right(String(4,48) & Second(Now()),2)
CreateGUID = tmpTemp
End Function
%>
<input type="hidden" ng-model="user.token" value="<%=token%>">
我在同一頁面中使用AJAX調用(如果需要的話可以使用AngularJS)將表單數據發布到將與數據庫建立連接的頁面,該頁面如下所示:
<%@ LANGUAGE="VBScript" %>
<%If Request.ServerVariables("REQUEST_METHOD") = "POST" Then%>
<%If Request.Form("token") = Session("token") Then %>
'here I make connection to database and and insert rest of form data in database
好的,讓我們逐一介紹一下...
您將獲得當前日期和時間的所有字段,並使用Right(..., 2)
和String(4,48)
對它們進行零填充。 然后將它們連接在一起。 這將導致...代表當前日期和時間的字符串。 例如,立即為我運行該命令會生成20141212131100
。
首先,它絕對不是GUID ,它是根據時間,硬件信息和一些隨機性精心設計的。 顯然,只要有人看到此令牌,他們就會了解它是如何制成的以及如何偽造的。 他們也只需要精確到最近一分鍾! 此令牌生成器絕對沒有隨機性。
因此,要回答您的問題,不,這是不安全的。 如果您無權訪問可生成實際GUID或UUID的COM對象,那么僅使用長隨機數怎么辦? 它不是完美的,但是會比您現在擁有的要好得多。
我想通過向您展示如何從VBScript生成真正的GUID來提供更多幫助。
Function NewGUID()
Dim TypeLib : Set TypeLib = CreateObject("Scriptlet.TypeLib")
NewGUID = CStr(TypeLib.Guid)
End Function
如果將其用作反CSRF令牌,則它應與現有的其他解決方案一樣安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.