通过WCF公开sql server主键

时间:2011-12-31 22:01:59

标签: wcf sql-server-2008 windows-phone-7

我通过WCF公开Sql Server数据,以便在WP7应用程序上使用。现在我有一个选择,要么是使用主键处理数据,要么是使用同一个表的其他列。

我个人认为最好不要暴露PK,而不是手机不安全,而是因为互联网。但是,请告诉我。

感谢,

1 个答案:

答案 0 :(得分:0)

我认为你提到的PK是int类型,暴露值是不安全的。

在这种情况下,我将添加GUID类型的备用键(SQL Server中的uniqueidentifier)。可以使用.Net代码中的System.Guid.NewGuid()方法填充该字段,也可以使用SQL中的newid()函数填充该字段。

这会使密钥无法预测。例如,如果某人嗅探您的WCF流量并看到值为4的PK,他们可以尝试接近值(2,3,5 ...)来访问其他记录。 GUID不是连续的,因此很难猜出其他关键值。


请注意,GUID占用的存储空间比int(或2x bigint)多4倍,因此如果这是一个大表,GUID方法可能会占用更多空间。

在这种情况下,您可能会重新考虑暴露密钥是否真的是一个安全问题;如果应用程序的设计是安全的,或者所有记录都是由任何人查看的,那么暴露PK值应该不会那么糟糕。

毕竟,如果您查看此页面的URL,您会注意到值8690786,这很可能是问题的公开整数标识符。