ASP.NET Web Api で RavenDb を使用していますが、Load<Type>
メソッドを使用して他のドキュメントをクエリできることに気付きました。
例えば:
public class Person
{
public string Id { get; set; }
public string FullName { get; set; }
/* Other properties */
}
public class Pet
{
public string Id { get; set; }
public string FullName { get; set; }
}
[HttpGet]
public Person FindById(string id)
{
using (IDocumentSession session = _docStore.OpenSession())
{
return session.Load<Person>(id);
}
}
Web API メソッドで ajax を介して FindById("pets/13") を呼び出すと、共通のプロパティを共有するため、ペットのエンティティ データを含む Person オブジェクトが返されます。どうすればそれを回避できますか? これにより、機密データが攻撃者に公開される可能性があります。
プロパティが一致しない場合でも、null プロパティを持つオブジェクトが返され、指定された ID を持つエンティティの存在が公開されます。
これに対する私の現在の回避策は次のとおりです。
[HttpGet]
public Person FindById(string id)
{
using (IDocumentSession session = _docStore.OpenSession())
{
return session.Load<Person>("people/" + id.Split('/')[1]);
}
}