سلام و وقت بخیر
دوستان بنده برای جلوگیری از حملات xss این دستور رو بالای ویوو قرار دادم
@using System.Text.Encodings.Web
و برای نمایش متنی که از ادیتور اومده و امکان داره دستوارت مخرب داشته باشه که توسط کاربر وارد شده هم دستور زیر رو استفاده کردم که متن ذخیره شده توسط ادیتور رو نشون بده و جلوی حملات xss گرفته شه
@HtmlEncoder.Default.Encode(Model.Text)
که دستور بالا به جای دستور پایین قرار داده شده چون این پایینی نا امن هست
@Html.Raw(Model.Text)
اما دیگه متن رو نشون نمیده و مثل زیر میشه. ایراد کار کجاست ؟ و راه حل چیه ؟ ممنون
لرن)</p><p>&nbsp;</p><p>در ایندورهبه صورت پروزهمحور سایتیشبیه همین سایتتاپلرنرا پیادهسازی خواهیم
کد زیر رو قبلا توی استارتاپ قرار دادم و مشکلی مشابه که در view page source مرورگر بود حل شد اما با این وجود دستوری که در سوال مطرح کردم با کد زیر رفع نشده
services.AddSingleton<HtmlEncoder>(
HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.BasicLatin,
UnicodeRanges.Arabic }));
و احتمالا باید یه چیزی شبیه این باشه که مشکل رو حل کنه
ببینید این موضوع طبیعی هست. موتور یا انجین Html Encoding فقط برای حروف لاتین یا En امن شده است. دلیل این امر هم مرورگرها هستن که فقط کاراکترهای انگلیسی رو میتونن بخونن. بنابراین کاراکترهای Persian یا Arabic هم موقع Encode شدن به صورت &xxx نمایش داده میشن تا یک حالت امن برای Html باشه. لینک زیر رو بخونید.
Why ASP.NET Core convert Persian(or Arabic) text to Character reference (&#xhhhh;) in view
نکته جدیدی که متوجه شدم اینه که دستور زیر
@System.Text.Encodings.Web.HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.Arabic, UnicodeRanges.BasicLatin}).Encode("hello سلام <p></p>")
که تنظیم کردیم با عربی و لاتین مشکلی نداشته باشه و دفعه قبلی توی استارتاپ گذاشته بودم ولی روی این دستور توی وویو تاثیری نداشت، الان تنظیماتش رو اوردم توی همین دستور داخل وویو تا ان کد کنه
حالا متوجه شدم این دستور با این تنظیمات با خوندن تگ ها مشکل داره و خروجی کد بالا میشه hello سلام <p></p> که یعنی حروف فارسی و انگلیسی رو میخونه اما تگ ها رو نمیتونه بخونه
خب دوستان نتیجه تحقیق های چند روزه خودم رو اینحا مینویسم
اول اینکه خود دات نت کور در مقابل حملات xss بطور پیشرفرض ایمن هست. اما موضوعی که وجود داشت این بود که میگن ادیتور ها در مقابل دستورات مخرب ایمن نیستن مثلا شما یه اسکریپت مینویسی داخل همین پاسخ و ثبت میکنی، و این اسکریپت هر زمانی که کاربری این صفحه رو باز کنه اجرا میشه و میتونه اطلاعاتی از کاربر بگیره یا کاربر رو بفرسته صفحه فیک که اطلاعات ورودش رو بگیره یا خرابکاری هایی کنه
اما مجموعا متوجه شدم حداقل در مورد ckeditor اینطور نیست و هرچه تحقیق کردم نبود چیزی و تست هم که کردم، اسکریپت ها اجرا نمیشدن. در مجموع نیاز نیست کار خاصی برای حملات xss توی ckeditor انجام بشه
البته توی تگ های a که کاربر آدرسش رو تعیین کرده یا میتونه تغییری بده هم باید حواستون باشه اونجام میتونه دستورات مخرب بزنه. همیطور کنترل کنید اگه وجود نداشت بره صفحه 404
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
77
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
215
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
397
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
568
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
77
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
931
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
598
- پاسخ :
1
|