روشهای امن سازی: امن سازی در برنامه توسط برنامه نویس – امن سازی در ورودی سرور از طریق IPS
1- URL Encoding: استفاده نکردن از کدهای معمولی اسکی و جایگزینی آن با معادل یونیکد آن (در قالب %xx):
%63=c %67=g %69=l
2- Directory Insertion: ارسال کدهایی نظیر /./ که وب سرورها به معنی برگشت به شاخه جاری میشناسند.
Get /./ cgi-bin /./ broken.cgi http/ 1.0
3- ارسال اطلاعات در header:
Get /http/ 1.0 \n\nheader: … /…/ cgi-bin/ broken.cgi/ http/1.0
4- long URL: استفاده از نام طولانی در ابتدای ورودی:
Get /thisisajunk urlforpassidsids/…/cgi-bin/…
قسمتی که زیر آن خط کشیده است با استفاده از /.. در نظر گرفته نمی شود (توضیح در ادامه)
5- استفاده از tab به جای فاصله
Get <tab> /cgi-bin /broken.cgi <tab>http /1.0
6- case sensitive: استفاده از حروف بزرگ به جای حروف کوچک
7- widows delimiter: در ویندوز استفاده از \ به جای / مجاز است
Get /cgi-bin\broken.cgi http/ 1.0
8- session splicing: تکه تکه کردن بسته درخواست به وسیله نرم افزارهایی مثل whisker
نکته: در مباحث سیستم عامل دو وب موجودیت داریم 1- ” یک نقطه” (.) 2- “دو نقطه” (..). نقطه همیشه اشاره گری است که به شاخه جاری و دو نقطه هم اشاره گری به شاخه بالاتر است. یعنی در لینوکس، ویندوز و … اگر بزنید cd.. یعنی یک شاخه بالا برود. مثلاً اگر در /tmp هستید با زدن دستور cd .. به محل / می روید و نقطه یعنی شاخه جاری اگر بگویید cd. در همین جایی که هستید می مانید. و اما نکته ای که در bypass کردن گفته شد یعنی /wp-content/abcd…../../index.html این درخواست هیچ فرقی با /wp-content/index.html ندارد (چون ../ باعث می شود یک پوشه به بالا برویم). از این روش برای bypass و دسترسی به شاخه های دیگر استفاده می کنند. ممکن است برخی از مرورگرها معادل آدرس وارد شده را به دست آورند و آن را به سمت سرور ارسال کنند ممکن است برخی از مرورگرها مثلاً قبلاً IE) Crash) کنند.