C# 如何防止从服务器向UI公开主id?
我们有需要向客户公开的产品和产品图像API。我不想公开数据库中生成的产品id,因为它们是顺序id,任何攻击者都可以轻松更改。这些API不安全,因为我们通过JS使用它们,并且将暴露给多个客户端 客户机点击POST API/product/并且请求主体具有产品详细信息 在响应中,我们得到了产品uri,即/product/1/。这里1是产品id 此外,客户使用此产品id插入图像,如: /产品/1/图片/C# 如何防止从服务器向UI公开主id?,c#,asp.net-mvc,C#,Asp.net Mvc,我们有需要向客户公开的产品和产品图像API。我不想公开数据库中生成的产品id,因为它们是顺序id,任何攻击者都可以轻松更改。这些API不安全,因为我们通过JS使用它们,并且将暴露给多个客户端 客户机点击POST API/product/并且请求主体具有产品详细信息 在响应中,我们得到了产品uri,即/product/1/。这里1是产品id 此外,客户使用此产品id插入图像,如: /产品/1/图片/ 我担心我们会暴露身份证,任何人都可能会改变这些身份证。我读了一些东西。但我不清楚在MVC环境下解决
我担心我们会暴露身份证,任何人都可能会改变这些身份证。我读了一些东西。但我不清楚在MVC环境下解决这个问题的正确方法是什么。我们可以将库存id存储在“会话”存储中吗?或者最好的解决方法是什么?无论您将其存储在何处,客户端都必须拥有该id。俗话说“客户是敌人的手”。处理此问题的唯一正确方法是不关心ID,而是保护您的API,以便只有允许更改内容的用户才能这样做。如果我正确理解了您的问题,当前流程如下:
也就是说,我仍然建议认真增加访问控制,这样人们只能更新他们被允许更新的内容。“API不安全,因为我们通过JS使用这些API,并且会暴露给多个客户端”听起来像是通过模糊实现的安全性——通常是个坏主意。也就是说,uniqueidentifier列映射到C#中的Guid,除非您告诉数据库这样做,否则它们不是顺序的。我们如何保护将从web客户端(即通过JavaScript)调用的api?可能是我们可以向客户端发送加密id。。服务器将为将来的请求解密相同的内容。这不正确吗?因为我们只关心客户端不应该有任何ID模式,所以您可以像其他人一样保护API:访问控制。不要让随机的网络陌生人调用你的API。Https用户名/密码是最原始的,您需要选择适合您的机制。如果我没有错的话,只有从外部来源访问api时才能解决此问题。。不过,任何人都可以通过邮递员等摆弄这些东西。。。不这就是重点。您确实需要阅读有关身份验证/授权的基础知识。找一本好书或一本教程。这个网站是为非常具体的问题,你似乎错过了一个很好的概念的一部分。这还不错,但你需要仔细阅读。