1

我有一个新的开发人员正在创建具有某种接口变量的模型以“保护”其他变量。代码有点像这样:

public class stuff
{
   public int id { get; set; }
   public string name { get; set; }
   public int thingType { get; set; }
}
public class people
{
   public int id { get; set; }
   public sting name { get; set; }
   private IEnumerable<stuff> ourThings;
   public IEnumerable<stuff> things { get {return ourThings; } }
}

我假设如果我不想冒险有人修改模型,我会将这些变量的 set 方法设为私有。我也不知道这会如何影响\防止对我的网站的攻击。有没有人见过或听说过这个?如果是这样,你能解释一下真正的目的是什么以及我想要保护什么吗?

再次感谢!

4

2 回答 2

3

那么整个事情的总体问题是:

private IEnumerable<stuff> ourThings;
public IEnumerable<stuff> things { get {return ourThings; } }

是集合仍然可以修改。您不需要 aset来修改集合,因为它是引用类型。但是,如果您想通过设计使其不可变,您可以执行以下操作:

private IEnumerable<stuff> ourThings;
public IEnumerable<stuff> things { get {return ourThings.ToList(); } }

因为这将构建原始集合的副本。无论如何,这是一种方法,并且证明是非常成功的。

于 2013-08-05T20:07:49.320 回答
0

公共、内部和私有访问修饰符用于对您的应用程序架构实施约束,它们并非旨在防御攻击。

我建议您寻求有关如何保护 Web 应用程序的指导。关于这个主题有很多可用的材料。

于 2013-08-05T20:16:01.763 回答