PDA

View Full Version : حرفه ای: حذف HTTP response headers های اضافه



khadem1386
پنج شنبه 10 شهریور 1390, 02:35 صبح
سلام
اگر بخواهیم HTTP response headers های اضافه که در سایتمون استفاده نمی شه را حذف کنیم آیا امکان پذیره

کجا را باید تغییر بدهیم
و اینکه آیا باید توی IIS تنظیمات را تغییر بدهیم یا بوسیله کد نوشتن هم می شه

آیا می شه این تنظیمات را فقط برای یک سایت تنظیم کرد؟ یا اینکه کل سرور از یک تنظیمات یک پارچه برخوردار است

یا در سرور های اشتراکی می شه صحبت از حذف و costom کردن هدر ها کرد.

متشکرم

prankster
پنج شنبه 10 شهریور 1390, 03:23 صبح
header های http اطلاعاتی را قبل از بارگزاری صفحه برای مرورگر می فرستند، و این اطلاعات معمولا از چند بایت بیشتر نیستند، اطلاعاتی مثل caching، وجود یا نحوه فشرده سازی، طول اطلاعات ارسالی و یا content-type صفحه اطلاعاتی هستند که بدون آن مرورگر اطلاعات را غلط و یا ناکافی پردازش می کند!
در ASP.Net معمولا فقط X-AspNet-Version است که اضافه به نظر می رسد و برای حذف آن می توان با انتخاب enableVersionHeader=false در فایل config پروژه و یا machine.config سرور آنرا غیر فعال کرد:
<httpRuntime enableVersionHeader="false"/>
در IIS هم X-Powered-By header به صورت پیش فرض هنگام ایجاد وبسایت ایجاد می شود که برای غیر فعال کردن آن در تنظیمات وبسایت در قسمت HTTP Headers می توان آنرا remove کرد.
در مورد بقیه header ها با استفاده از یک HTTP Module و در وقفه PreSendRequestHeaders می توان header های ارسالی را مدیریت و یا حذف کرد:
HttpContext.Current.Response.Headers.Remove("header");

در مورد وقفه PreSendRequestHeaders دقت کنید که هنگام debug تنها در صورتی قابل اجرا است که برنامه IIS integrated pipeline اجرا شده باشد. این تنظیم در قسمت Web از تنظیمات پروژه و با انتخاب Use Local IIS Web server قابل انجام است!

khadem1386
جمعه 11 شهریور 1390, 11:57 صبح
با تشکر از شما دوست عزیز

من از سرور اشتراکی استفاده می کنم. سوالم این است که بخش دوم مثالی که زدید را من می توانم استفاده کنم و در کد بندی بکار ببرم؟

سوال دوم من هم این است که آیا X-AspNet-Version بطور کلی چقدر ارزش اطلاعاتی داره. در واقع من می خوام با حذف هدر های اضافی خود امنیت سایت را بالا ببرم.

با تشکر

prankster
جمعه 11 شهریور 1390, 12:46 عصر
در وقفه PreSendRequestHeaders از یک Module به تمامی header های ارسالی برای کلاینت دسترسی دارید، می توانید همه یا تعدادی را حذف یا ویرایش کنید. باز هم تاکید می کنم در حالت debug تنها در صورتی می توانید از وقفه PreSendRequestHeaders استفاده کنید که برنامه را در IIS اجرا کرده و debug کنید! استفاده از Visual Studio Debugger در این حالت ممکن نیست!
X-AspNet-Version هیچ ارزش اطلاعاتی ندارد، تنها نسخه Net. وبسابت را نمایش می دهد و جنبه تبلیغاتی دارد.
تنها header هایی که جنبه امنیتی دارند header های مربوط به cookie هستند. اگر مایل هستید در مورد حملات Session Hijacking و Session Fixation تحقیق کنید.