gpt4 book ai didi

asp.net - 在 Web 应用程序之间传递 ID

转载 作者:行者123 更新时间:2023-12-02 16:54:24 26 4
gpt4 key购买 nike

我们有几个 Web 应用程序,它们创建购物车,将其保存到数据库,然后重定向到集中式 Web 应用程序来处理和接受购物车的付款。现在,我们使用 GUID 作为购物车 ID,并将查询字符串中的这些 GUID 传递给支付应用程序。我们使用 GUID,以便用户无法轻易猜测其他用户的购物车 ID,只需将该 ID 插入 URL 即可。

现在,在数据库中使用 GUID 不利于索引,并且在 URL 中使用 GUID 并不能真正阻止用户访问另一个购物车。然而,使用传递整数会让事情变得太容易了。

将 ID 从单个应用程序传递到集中支付应用程序的最佳且最安全的方法是什么?

我知道有些人可能会说,“谁在乎别人是否愿意为别人的购物车付款呢?”但是,当将 ID 传递到显示收据的页面并且该页面包含客户姓名时,我们也有同样的担忧。

最佳答案

您可以将 ID 作为整数与“ token ”一起传递,“ token ”将是购物车 ID 的(加密强度较高的)哈希值和随机 secret 字符串。支付处理器会知道这个 secret ,因此它可以自己执行哈希并比较它是否有效。

例如,您可以使用以下(未经测试的)代码来创建 token :

public static string GenerateHash(long CartID)
{
string SourceText = CartID.ToString();
//Salt the source text (secret)
SourceText += "5E95C91F7F947BD92ACA2CF81C3ADBD9B563839D85EA69F9DEA5A2DC330D0F50";
//Create an encoding object to ensure the encoding standard for the source text
UnicodeEncoding Ue = new UnicodeEncoding();
//Retrieve a byte array based on the source text
byte[] ByteSourceText = Ue.GetBytes(SourceText);
//Instantiate an MD5 Provider object
System.Security.Cryptography.SHA1CryptoServiceProvider SHA1 = new System.Security.Cryptography.SHA1CryptoServiceProvider();
//Compute the hash value from the source
byte[] ByteHash = SHA1.ComputeHash(ByteSourceText);
//And convert it to String format for return, also modify for URL use
return Convert.ToBase64String(ByteHash).Replace("=", "").Replace("+", "-").Replace("/", "_");
}

传递此函数的结果以及您的购物车 ID,因为哈希是一种无法逆转的单向函数。在支付处理器上,您可以对传入的购物车 ID 调用相同的函数,并将其与 token 进行比较。

这将防止篡改查询字符串,但允许您使用整数。

关于asp.net - 在 Web 应用程序之间传递 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3246361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com