Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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
C# 如何创建一个不能伪造的唯一id?_C#_Php_Uniqueidentifier_Serial Number - Fatal编程技术网

C# 如何创建一个不能伪造的唯一id?

C# 如何创建一个不能伪造的唯一id?,c#,php,uniqueidentifier,serial-number,C#,Php,Uniqueidentifier,Serial Number,我有一个.NET客户端应用程序和一个PHP服务器web应用程序 在某些情况下,.NET应用程序必须由唯一的id标识,并通过http post将该数据传递给Web服务器。web服务器将响应一些数据,并将唯一id存储在数据库中 假设我有一个恶意用户,我想用唯一id来禁止他。所以我认为这个唯一id有两个重要的方面: 唯一id必须是真正唯一的,并且每台计算机的id始终相同 用户不应该欺骗系统。被禁止的用户可以生成一个新的id,并手动将其发布到web服务器以接收新数据 如何确保用户无法轻松生成唯一id 如

我有一个.NET客户端应用程序和一个PHP服务器web应用程序

在某些情况下,.NET应用程序必须由唯一的id标识,并通过http post将该数据传递给Web服务器。web服务器将响应一些数据,并将唯一id存储在数据库中

假设我有一个恶意用户,我想用唯一id来禁止他。所以我认为这个唯一id有两个重要的方面:

唯一id必须是真正唯一的,并且每台计算机的id始终相同 用户不应该欺骗系统。被禁止的用户可以生成一个新的id,并手动将其发布到web服务器以接收新数据 如何确保用户无法轻松生成唯一id

如何确保在服务器上验证唯一id的有效性


加密的常用方法是什么?这里?

为所有应用程序创建UUID,并在验证后将其存储到数据库中,然后删除/禁止/标记UUID,以便它们不能再次使用

MYSQL中的UUID:

也可在postgres和其他RDBMS存储中使用


我多次使用UUID创建了1000万个列表,但从未发生过冲突。

好的,下面我总结一下:

当然,没有完善的安全体系。杰瑞米·米勒 Dan的回答是不正确的,因为MySql UUID不依赖于设备,因此不符合每台计算机的id应该相同的条件 我应该生成一个像UUID这样的id,以加密的形式存储在计算机上的某个地方,在代码中包含一个种子,然后将id的散列与种子一起传输到服务器,要求每次调用都包含该散列以及一些其他组件,这些组件也包含在散列中以进行验证。杰瑞米·米勒 这种方法不是傻瓜式的,因为本地存储的所有内容都可以删除,但至少很难猜测生成的有效哈希
是的,但即使是最基本的算法也能防止大多数人伪造您的身份证-你可以存储mac地址的散列,但也有欺骗的方法。@DaveS:一个IP地址可以跨越一个完整的网络,所以除了可能的欺骗之外,“每台计算机始终相同”在这里并不真正起作用。生成一个像UUID这样的id,以加密的形式存储在计算机上的某个位置,在代码中包含一个种子,然后将id的散列与种子一起传输到服务器,要求每次调用都包含该散列以及您也包含在散列中以验证的其他组件。是的,这是真的,christopheD,但据我所知,确实没有一个解决方案完全符合他的标准。假设您希望允许新用户自由创建帐户。本地存储的任何内容都可以删除,所有标识信息都可以更改。不管怎样编辑评论。不向下投票,因为它不容易通过,但这不符合要求。唯一id必须是真正唯一的,并且根据计算机要求始终相同。从我的链接-UUID被设计为在空间和时间上全局唯一的数字。对UUID的两个调用预计将生成两个不同的值,即使这些调用是在两台彼此未连接的独立计算机上执行的。除此之外,我不知道OP是什么意思。。。如果他能澄清,我也可以扩展我的答案uuid不总是生成一个新的唯一id吗?所以这并不能解决我的问题。你只有在应用程序验证后才能生成uuid吗?存储它,并将其与该应用程序使用的凭据一起传递-此讨论正在转变为编程101-对此无能为力,回答了UUID问题,我认为这是主要问题。请注意,我可能不应该将其命名为UUID,而只是uid。