【问题标题】:Security Classic ASP安全经典 ASP
【发布时间】:2014-11-07 15:30:23
【问题描述】:

这足够安全吗?我对经典的 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

【问题讨论】:

  • asp.net 标签是什么?您所说的 Classic ASP 和 VBScript 这些与 ASP.Net 不同,那是什么?
  • 将该函数也称为CreateGUID() 确实具有误导性,因为这不是true GUID。
  • 方法没问题,但我倾向于将 token 存储在一个单独的 cookie 中,并使用您指定的唯一名称,而不是依赖会话 cookie 来存储值。
  • 好的。已删除 ASP.NET 标记。

标签: ajax angularjs vbscript asp-classic


【解决方案1】:

好的,让我们一点一点地回顾一下……

您将获取当前日期和时间的所有字段,并使用Right(..., 2) 和String(4,48) 对它们进行零填充。然后你将它们连接在一起。这将导致... 表示当前日期和时间的字符串。例如,现在为我运行它会产生20141212131100。

首先,它绝对不是GUID,它被仔细指定为依赖于时间、硬件信息和一点随机性。显然,只要有人看到这个令牌,他们就会明白它是如何制作的以及如何伪造它。它们也只需要精确到最近的分钟!这个令牌生成器绝对没有随机性。

所以要回答您的问题,不,它不安全。如果您无法访问可以生成真实 GUID 或 UUID 的 COM 对象,那么仅使用长随机数怎么样?它不会是完美的,但它会比你现在拥有的要好得多。

【讨论】:

    【解决方案2】:

    我想通过向您展示如何从 VBScript 生成真正的 GUID 来提供更多帮助。

    Function NewGUID()
        Dim TypeLib : Set TypeLib = CreateObject("Scriptlet.TypeLib")
        NewGUID = CStr(TypeLib.Guid)
    End Function
    

    如果你使用它作为你的反 CSRF 令牌,那么它应该和其他任何解决方案一样安全。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 2020-11-18
      相关资源
      最近更新 更多