PDA

View Full Version : سوال: ذخیره متن حاوی تگ های HTML



dr_csharp
سه شنبه 21 خرداد 1387, 10:35 صبح
سلام
من یه TextBox دارم حاوی کاراکتر های زیر :
<b>salam</b>
وقتی میخوام این کاراکترها رو تو یه فایل Text ذخیره کنم خطا رخ میده و فکر میکنه XSS داره رخ میده !چیکار کنم تا بتونم کاراکترهام رو ذخیره کنم ؟

raravaice
سه شنبه 21 خرداد 1387, 12:06 عصر
اینو بزار توی Header صفحه یا تو تگ Page از web.config


validateRequest="false"

موفق باشید

dr_csharp
سه شنبه 21 خرداد 1387, 12:15 عصر
اینو بزار توی Header صفحه یا تو تگ Page از web.config


validateRequest="false"

موفق باشید
این قبول ولی اگه قرار باشه اینطورعمل کنیم بهتره طوری باشه که تغییرات فقط درمورد TextBox مربوطه و نه کل صفحه، اعمال بشه درغیراینصورت ریسک بزرگیه !

raravaice
سه شنبه 21 خرداد 1387, 13:07 عصر
جساراتا این ریسکی که ازش دم میزنید چیه که راه حل دیگه ای نداره جز اینکه تگ HTML رو کلا قبول نکنی؟!


موفق باشید

m.hamidreza
سه شنبه 21 خرداد 1387, 13:31 عصر
این قبول ولی اگه قرار باشه اینطورعمل کنیم بهتره طوری باشه که تغییرات فقط درمورد TextBox مربوطه و نه کل صفحه، اعمال بشه درغیراینصورت ریسک بزرگیه !
همین کار رو انجام بده فقط همه ی مقادیر ورودی رو Encode کن که اسکریپت کسی نتونه Run کنه.



HttpUtility.HtmlEncode(txt_fname.Text)

dr_csharp
سه شنبه 21 خرداد 1387, 13:43 عصر
جساراتا این ریسکی که ازش دم میزنید چیه که راه حل دیگه ای نداره جز اینکه تگ HTML رو کلا قبول نکنی؟!
موفق باشید
خواهش میکنم . ریسک شیرین XSS :ناراحت:

raravaice
سه شنبه 21 خرداد 1387, 13:58 عصر
اون ریسک شیرین XSS رو همونطور که m.hamidreza (http://barnamenevis.org/forum/member.php?u=35652) گفت میشه بر طرف کرد یعنی باید این کارو بکنی و مایکروسافت یکی از دلایلی که validateRequest="false" تعبیه کرده این بوده که آدمی مثل من که با XSS آشنا نیست و ورودی داده رو htmlencode نمیکنه سعی کنه با دیدن این ایراد خودش رو با XSS بیشتر آشنا کنه.
مثلا Editor این سایت که validateRequest="false" نداره بخوای بزاری توی صفحه پس باید HtmlEncode کنی که مشکل پیش نیاد.

موفق باشید

javad3151
پنج شنبه 23 خرداد 1387, 08:31 صبح
خيلي مطلب مفيدي بود ؛ فقط چند يه سوال؛ يعني بايد تمام مقادير وروردي (از كنترل ها يا كوئري استرينگ) رو Encode بكنيد؟ و بهمون صورت توي ديتابيس ذخيره ميكنيد و هنگام نمايش decode ش مي كنيد؟

dr_csharp
پنج شنبه 23 خرداد 1387, 08:52 صبح
يعني بايد تمام مقادير وروردي (از كنترل ها يا كوئري استرينگ) رو Encode بكنيد؟ و بهمون صورت توي ديتابيس ذخيره ميكنيد و هنگام نمايش decode ش مي كنيد؟
بله.با اینکار از run شدن script توسط اشخاص جلوگیری میکنید.HttpUtility.HtmlEncode باعث تبدیل کاراکترهای HTML به مقادیر دیگر میشه . برای مثال <> به lt& و gt& تبدیل میشن و هنگام خواندن،مجدد با Decode نمودن، به HTML موردنظر خواهید رسید.

alendelon
شنبه 20 مهر 1387, 12:26 عصر
با سلام
میشه یک مثال برای نحوه کاربرد HttpUtility.HtmlEncode بزنین. که چطور میشه از این یک کد اینکد شده برای ذخیره در دیتابیس گرفت؟

متشکر از بزرگان

m.hamidreza
شنبه 20 مهر 1387, 18:30 عصر
با سلام
میشه یک مثال برای نحوه کاربرد HttpUtility.HtmlEncode بزنین. که چطور میشه از این یک کد اینکد شده برای ذخیره در دیتابیس گرفت؟

متشکر از بزرگان
این یه متد هست مثالش هم در پست 5 من گفتم کاری نمیخواد انجام بدی فقط مقدار ورودیتو بهش میدی. خروجیش هم یه مقدار استرینگ هست و در db اینسرت میکنی.