XSS با رمزگذاری URL – Exchange Security Stack Security Information Security

در این مثال خاص، این پارامتر به XSS آسیب پذیر نخواهد بود.

این بستگی دارد، شما بارهای اطلاعاتی را ارائه نمی دهید، اما به طور کلی، به نظر می رسد چیزی شبیه به: htmlspecialchars (htmlentities ($ input)) فوق العاده امن است.

این بدان معنا نیست که سایت SITE آسیب پذیر نیست، بلکه به این معنی است که این پارامتر به طور خاص امن است.

این هنوز هم بستگی دارد، آیا پارامتر ورودی شما را به یک لینک، iframe، تصویر و غیره تزریق می کند؟ اگر در عنصر دیگری تزریق می شود، ممکن است بدون در نظر گرفتن روش هایی مانند javascript: و داده ها: .

آیا ممکن است کوکی ها را بدون XSS سرقت کنم؟

این سایت از کوکی ها برای ارائه خدمات ما و نمایش آگهی های مرتبط و لیست های شغلی استفاده می کند.
با استفاده از سایت ما، شما تأیید میکنید که ما خط مشی کوکیها، خط مشی رازداری و شرایط خدمات ما را خوانده و درک کردهاید.
استفاده شما از محصولات و خدمات سرریز پشته، از جمله شبکه سرریز پشته، تحت این شرایط و ضوابط است.
                

برچسب لنگر () چگونه یک XSS ذخیره شده را انجام می دهد؟

من سعی کردم تا xss را بگیرم اما ورودی غلط سایت اما وقتی وارد https://google.com شدم این سایت این را انجام داد

 https://www.google.com 

بنابراین من به این سعی کردم [19659004] javascript: alert (7)

سایت این کار را انجام داد

: هشدار (7) 

بنابراین هر کسی فکر میکند که چگونه این فیلتر را دور بزنیم

جاوا اسکریپت – آسیب پذیری های 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)
جستجوی آژاکس:     

مجوز XSS بدون تگ های HTML

کدام بار را می توان برای استفاده از XSS بدون استفاده از تگ های HTML <> استفاده کرد. این برچسب ها فیلتر شده اند (sanitized) و در خروجی کد گذاری می شوند.