Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 安全经典ASP_Ajax_Angularjs_Vbscript_Asp Classic - Fatal编程技术网

Ajax 安全经典ASP

Ajax 安全经典ASP,ajax,angularjs,vbscript,asp-classic,Ajax,Angularjs,Vbscript,Asp Classic,这足够安全吗?我没有任何使用经典ASP或VBScript的经验 Function NewGUID() Dim TypeLib : Set TypeLib = CreateObject("Scriptlet.TypeLib") NewGUID = CStr(TypeLib.Guid) End Function 我有一个经典的ASP页面,它接收表单数据并将其发送到另一个与数据库建立连接的经典ASP页面。我将其用于表单输入页面上的CSRF令牌: <% Dim token tok

这足够安全吗?我没有任何使用经典ASP或VBScript的经验

Function NewGUID()
    Dim TypeLib : Set TypeLib = CreateObject("Scriptlet.TypeLib")
    NewGUID = CStr(TypeLib.Guid)
End Function
我有一个经典的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或uuid的COM对象,那么使用一个长随机数怎么样?它可能并不完美,但它会比您现在拥有的要好得多。

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

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

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

标签有什么用?你所说的经典ASP和VBScript与ASP.Net不同,那么是哪一个呢?同时调用该函数a
CreateGUID()
确实有误导性,因为这不是真的。这种方法是可以的,但是我倾向于使用您指定的唯一名称将
令牌
存储在单独的cookie中,而不是依赖会话cookie来存储值。好的。ASP.NET标记已删除。