用户输入安全.net

时间:2011-01-15 13:11:50

标签: asp.net security json

我有客户端用户设置管理器。设置通过Web服务保存。我将它们序列化为json。由于json可以在发送之前进行操作,因此我想在服务器上验证它。

最佳做法是什么,我需要寻找什么? 在反序列化之前验证?用户可以使用哪种恶意输入?他可以操纵json,以便在使用默认的asp net javascript反序列化反序列化时以某种方式伤害我吗?

var userinput = { param1 : "test", categories : ["2312", "4324", "2122"] }

这个被发送到服务器,序列化。 在服务器上反序列化为对象图。

public class usersettings
 public property param1 as string
 public property categories as string()
end class

param1是正则表达式检查,可能只有字母和数字,以字母开头,最多10个符号。 类别必须是不同的,不超过10 ...

usersettingsclass是一个linq to sql genereted对象,可以直接推送到sqlserver。

这是一个非常简单的样本。在userinput中可以是任何东西。

1 个答案:

答案 0 :(得分:0)

这些设置对安全性敏感吗?如果用户与他们混淆会发生什么?

如果发生的唯一事情是你可以例外,那就不要打扰了。

如果这些设置可能以某种方式危及安全性,那么它们不应该是客户端,除非它们在被发送到客户端之前由服务器加密。换句话说,出于可扩展性的原因,它们只是“在客户端上”,而不是因为它们被客户端以任何方式操纵。

如果这些设置对安全性敏感,它们必须可由客户端修改,那么您就会遇到难以控制的情况。如果javascript可以修改它们,那么用户也可以。

最后,如果您担心的是客户端以某种方式操纵json数据以便导致反序列化异常,那么您应该研究json库中是否存在任何漏洞。如果没有,请不要担心,直到它们出现。

既然你提到你正在使用内置的ASP.NET库,我可以说我不知道​​这些库中有任何已知的可用性。