如何防止经典asp站点中的csrf攻击?

Ama*_*wat 1 asp.net asp-classic csrf-protection

我有一个用 vb6 和经典 asp(12 年前)开发的应用程序。现在我必须防止跨站点请求伪造(CSRF)。

我怎样才能做到这一点?

ull*_*ink 6

你可以像在 asp.net mvc 中一样实现它。

  1. 在服务器上生成令牌并将其存储(例如在会话中)
  2. 将令牌发送给客户端
  3. 客户端将其与“正常”表单数据一起发送回服务器
  4. 如果需要,请检查服务器上的令牌

您甚至可以“复制”asp.net 功能并编写一个像这样的 vbscript 函数:

public function AntiForgeryToken()
    AntiForgeryToken = "<input type=""hidden"" name=""CSRFToken"" value=""" & session("CSRFToken") & """/>"
end function

' then in every form as needed:

<form>
<%=AntiForgeryToken()%>
<input type="text" name="" value="">
<input type="submit" value="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

进一步阅读:

经典asp中的同步器令牌模式

跨站点请求伪造 (CSRF) 预防备忘单