دسته بندی ها
14:42 1399/09/06

نحوه جلوگیری از حملات xss در Asp.net core

مشخصات سوال کننده :
کاربر : hosseinfullstack     امتیاز کاربر : 58     رتبه کاربر : 16
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4347
1 نظر
hosseinfullstack : چیزی که متوجه شدم اینه با فارسی مشکل داره و انگلیسی رو نشون میده. احتمالا یه تنظیماتی چیزی داشته باشه. قبلا سوالی در مورد نشون ندادن حروف فارسی که از دیتابیس میاد در view page source مرورگر پرسیدم که استاد بحرانی فرد یه کد دادن در استارتاپ قرار دادم و مشکل حل شد. اینم احتمالا چیزی شبیه اون باشه با تنظیمات دیگه

امتیاز کاربر : 58   رتبه کاربر : 16   تاریخ ثبت : 10:46 1399/09/06
پاسخ دهنده : hosseinfullstack 22:57 1399/09/06

کد زیر رو قبلا توی استارتاپ قرار دادم و مشکلی مشابه که در view page source مرورگر بود حل شد اما با این وجود دستوری که در سوال مطرح کردم با کد زیر رفع نشده

services.AddSingleton<HtmlEncoder>(
            HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.BasicLatin,
                                            UnicodeRanges.Arabic }));

و احتمالا باید یه چیزی شبیه این باشه که مشکل رو حل کنه

ویرایش شده در جمعه 7 آذر 1399 ساعت 00:57:27
به این پاسخ امتیاز بدهید    1
امتیاز: 58 رتبه: 16
پاسخ دهنده : pedram_khan 13:48 1399/09/07

ببینید این موضوع طبیعی هست. موتور یا انجین Html Encoding فقط برای حروف لاتین یا En امن شده است. دلیل این امر هم مرورگرها هستن که فقط کاراکترهای انگلیسی رو میتونن بخونن. بنابراین کاراکترهای Persian یا Arabic هم موقع Encode شدن به صورت &xxx نمایش داده میشن تا یک حالت امن برای Html باشه. لینک زیر رو بخونید.

Why ASP.NET Core convert Persian(or Arabic) text to Character reference (&#xhhhh;) in view

ویرایش شده در جمعه 7 آذر 1399 ساعت 13:49:07
به این پاسخ امتیاز بدهید    0
امتیاز: 277 رتبه: 6
پاسخ دهنده : hosseinfullstack 17:42 1399/09/07

نکته جدیدی که متوجه شدم اینه که دستور زیر

@System.Text.Encodings.Web.HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.Arabic, UnicodeRanges.BasicLatin}).Encode("hello سلام <p></p>")

که تنظیم کردیم با عربی و لاتین مشکلی نداشته باشه و دفعه قبلی توی استارتاپ گذاشته بودم ولی روی این دستور توی وویو تاثیری نداشت، الان تنظیماتش رو اوردم توی همین دستور داخل وویو تا ان کد کنه

حالا متوجه شدم این دستور با این تنظیمات با خوندن تگ ها مشکل داره و خروجی کد بالا میشه hello سلام &lt;p&gt;&lt;/p&gt; که یعنی حروف فارسی و انگلیسی رو میخونه اما تگ ها رو نمیتونه بخونه

به این پاسخ امتیاز بدهید    0
امتیاز: 58 رتبه: 16
پاسخ دهنده : hosseinfullstack 16:35 1399/09/08

خب دوستان نتیجه تحقیق های چند روزه خودم رو اینحا مینویسم

اول اینکه خود دات نت کور در مقابل حملات xss بطور پیشرفرض ایمن هست. اما موضوعی که وجود داشت این بود که میگن ادیتور ها در مقابل دستورات مخرب ایمن نیستن مثلا شما یه اسکریپت مینویسی داخل همین پاسخ و ثبت میکنی، و این اسکریپت هر زمانی که کاربری این صفحه رو باز کنه اجرا میشه و میتونه اطلاعاتی از کاربر بگیره یا کاربر رو بفرسته صفحه فیک که اطلاعات ورودش رو بگیره یا خرابکاری هایی کنه

اما مجموعا متوجه شدم حداقل در مورد ckeditor اینطور نیست و هرچه تحقیق کردم نبود چیزی و تست هم که کردم، اسکریپت ها اجرا نمیشدن. در مجموع نیاز نیست کار خاصی برای حملات xss توی ckeditor انجام بشه

البته توی تگ های a که کاربر آدرسش رو تعیین کرده یا میتونه تغییری بده هم باید حواستون باشه اونجام میتونه دستورات مخرب بزنه. همیطور کنترل کنید اگه وجود نداشت بره صفحه 404

به این پاسخ امتیاز بدهید    1
امتیاز: 58 رتبه: 16
1 نظر
hosseinfullstack : البته دوستان این صحبت هام فقط در مورد xss بود چون ما انواع حملات دیگه هم داریم. مثلا برای همین آدرس ها که گفتم بحث حملات xsrf و... داریم که به روش خودش باید کنترل شه

امتیاز کاربر : 58   رتبه کاربر : 16   تاریخ ثبت : 04:57 1399/09/08
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود