我有一个页面,用户可以在我的数据库中修改自己的记录。这工作得很好,但我正在尝试整理所有的安全缺陷。从下面的代码中可以看到,此页面使用querystring参数获取数据。目前,任何人都可以更改此查询字符串并编辑任何记录。
如何使用PropertyInfo表中的"RequireAuthenticatedUser“和匹配的UserID字段合并检查?
当前代码:
@{
Layout = "~/_SiteLayout.cshtml";
WebSecurity.RequireAuthenticatedUser();
var db = Database.Open("StayInFlorida");
var rPropertyId = Request.QueryString["PropertyID"];
var Propertyinfo = "SELECT * FROM PropertyInfo WHERE PropertyID=@0";
var qPropertyinfo = db.QuerySingle(Propertyinfo, rPropertyId);
}发布于 2013-10-10 03:54:56
想必,您的PropertyInfo表还保存着属性所有者的用户ID?如果是这样,只需将其包含在WHERE子句中并传入CurrentUserId值:
var PropertyInfo = "SELECT * FROM PropertyInfo WHERE PropertyId = @0 AND UserId = @1";
var qPropertyinfo = db.QuerySingle(Propertyinfo, rPropertyId, WebSecurity.CurrentUserId);https://stackoverflow.com/questions/19277072
复制相似问题