من در حال تلاش برای ساختن یک برنامه MVC هستم و گفته شده است که این روش خوبی برای بازیابی اطلاعات نیست و حساس به اسکریپت cross-site است. من هرگز امنیت ندیده ام و سعی در یادگیری هم داشته ام، اما نمی توانم سرم را در اطراف آن ببندم.
من حدس می زنم که نقص های متعددی وجود دارد. آیا کدگذاری خاصی وجود دارد که می توانم استفاده کنم؟
تمام کد را در اینجا وارد نکردم، اما سعی کردم دریابم که من می توانم حملات XSS را متوقف کنم.
Model and View Model
The Namespace ThePeopleSearchApplication.Models
{
کلاس UserViewModel عمومی است
{
UID رشته عمومی {get؛ تنظیم؛ }
رشته عمومی FName {get؛ تنظیم؛ }
رشته عمومی LName {get؛ تنظیم؛ }
رشته عمومی ایمیل {get؛ تنظیم؛ }
وضعیت عمومی {دریافت؛ تنظیم؛ }
}
کلاس عمومی UserModel
{
UID رشته عمومی {get؛ تنظیم؛ }
رشته عمومی FName {get؛ تنظیم؛ }
رشته عمومی LName {get؛ تنظیم؛ }
رشته عمومی ایمیل {get؛ تنظیم؛ }
وضعیت عمومی {دریافت؛ تنظیم؛ }
}
}
کنترل
نام فضای ThePeopleSearchApplication.Controllers
{
کلاس عمومی MyController: کنترل کننده
{
// GET: My
شاخص ActionResult عمومی ()
{
بازگشت View ()؛
}
[ValidateInput(false)] // اضافه شده است تا XSS را بهتر درک کند
ActionResult عمومی SearchUserAjax (string userId)
{
UserModel myUser = fetchUserFromLdap (userId)؛
بازگشت به محتوا ("{" message ": " search for userId: "+
userId + "result "، "result ": "+ convertToJson (myUser) +") ")؛
}
رشته خصوصی convertToJson (UserModel myUser)
{
بازگشت "{" userId ": " "+ myUser.UserId +" "، " FirstName ": " "+
myUser.FirstName + ""، "LastName ": "" + myUser.LastName + ""، "ایمیل ": "" +
myUser.Email + ""، "وضعیت ": "" + myUser.Status + ""} "؛
}
[ValidateInput(false)] // اضافه شده است تا XSS را بهتر درک کند
ActionResult SearchUser عمومی (userId رشته)
{
UserModel myUser = fetchUserFromLdap (userId)؛
var ViewModel = UserViewModel جدید
{
UID = userID،
FName = myUser.FirstName
LName = myUser.LastName
ایمیل = myUser.Email،
وضعیت = myUser.Status،
}؛
بازگشت this.View (viewModel)؛
}
خصوصی UserModel fetchUserFromLdap (رشته userId)
{
var retVal = جدید UserModel ()؛
اگر (String.IsNullOrEmpty (userId))
{
retVal.UID = "N / A"؛
retVal.FName = "N / A"؛
retVal.LName = "N / A"؛
retVal.Email = "N / A"؛
retVal.Status = "N / A"؛
}
چیز دیگری
{
retVal.UID = userID؛
retVal.FName = "FirstName"؛
retVal.LName = "LastName"؛
retVal.Email = "[email protected]"؛
retVal.Status = " وضعیت من
"؛
}
بازگشت retVal؛
}
}
}
نمایش
model ThePeopleSearchApplication.Models.UserViewModel
@ {
ViewBag.Title = "نتیجه جستجو برای کاربر:" + Model.UserId؛
var ulId = "ul-id" + Model.UserId؛
var formId = "فرم" + Model.UserId؛
}
@ Scripts.Render ("~ / بسته نرم افزاری / جی کوئری")
@ Scripts.Render ("~ / bundles / bootstrap")
نتایج جستجو برای کاربر: @ Model.UserId
- @ Model.FirstName
- @ Model.LastName
- @ Model.Email
- @ Html.Raw (Model.Status)
جستجوی آژاکس: