جاوا اسکریپت – آسیب پذیری های XSS – امکان تعمیر آنها نیست

من در حال تلاش برای ساختن یک برنامه 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)
جستجوی آژاکس:     

تزریق sql – چگونه یک شرکت باید به نشت بالقوه PII واکنش نشان دهد؟

من امروز در آب گرم هستم، زیرا زمان زیادی را در دست من در محل کار داشتم و آزمایشهای نفوذ اولیه را انجام دادم. من یک توسعه دهنده نرم افزاری در موسسه مالی هستم، بنابراین قرار دادن کد آسیب پذیر برای حمله SQLi با grep مشکل نبود. دلیل اینکه من در معرض مشکل هستم این بود که با رئیس من تماس نگرفتم، اما در گزارش من کپی شده از CIO و معمار سیستم سربازی. در ایالات متحده، آیا چیزی وجود دارد که به طور رسمی از یک شرکت انتظار می رود که در مورد افشای سوراخ های امنیتی مانند این باشد؟