簡體   English   中英

安全經典ASP

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM