دانش اولیه موردنیاز برای ورود به باگ بانتی هانتینگ

دانش پایه موردنیاز برای شروع بهره‌برداری از وب

اولین فناوری پایه ای که همه ما با آن آشنایی داریم پروتکل HTTP است.

پروتکل HTTP

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

پروتکل پایه‌ای که برای بازیابی منابع اساسی استاتیک از آن استفاده می‌شود.

ازاین مدل پایه ای پیام محور برای برقرای ارتباطاتی مثل مدل ارسال درخواست از سمت مشتری و برگرداندن پاسخ از سمت سرور به درخواستی که فرستاده شده‌است، می‎‌باشد.

پروتکل HTTP اساسا یک پروتکل غیراتصال-گرا است.

در HTTP از پروتکل مرحله به مرحله TCP برای مکانیسم انتقال استفاده شده است که برای ارسال درخواست و دریافت پاسخ از آن استفاده می‌شود.

چرا پروتکل HTTP یک پروتکل غیراتصال-گرا است؟

به این علت پروتکل HTTP غیراتصال-گرا است که هر درخواستی که از طریق این پروتکل به سرور ارسال می‌شود، این درخواست از نظر سرور به عنوان یک درخواست مستقل شناخته می‌شود، و این درخواست مورد بررسی بیشتری قرار می‌گیرد تا سرور بداند که این درخواست از سمت چه کسی برای کدام یک از کوکی های موجود ارسال شده است. اگر درخواست شناخته شده و معتبر بود که خبر خوبیست، درغیراینصورت سرور درخواست را رها می‌کند، و یک پیام یا کد وضعیت خطا به سمت کلاینت ارسال می‌کند تا نامعتبر بودن درخواست را اعلام کند.

در ادامه درباره نمونه درخواست HTTP، شکل ظاهری آن و واژگان فنی‌ای که در این درخواست‌ها استفاده می‌شود صحبت می‌کنیم.

درخواست HTTP

نمونه درخواست HTTP به این شکل است:

 

GET /auth/488/YourDetails.ashx?uid=129 HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml,
image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-
flash, */*
Referer: https://mdsec.net/auth/488/Home.ashx
Accept-Language: en-GB
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64;
Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR
3.0.30729; .NET4.0C; InfoPath.3; .NET4.0E; FDM; .NET CLR 1.1.4322)
Accept-Encoding: gzip, deflate
Host: mdsec.net
Connection: Keep-Alive
Cookie: SessionId=5B70C71F3FD4968935CDB6682E545476

توضیحات قطعه کدی که در بالا آمده است:

خط اول HTTP به 3 قسمت تقسیم می‌شود که درشکل زیر آمده است:

درخواست پروتکل HTTP

 

سه قسمت نشان داده شده درشکل به شرح زیر است:

  1. اولین قسمت رایج ترین درخواست “درخواست(GET)” است که برای واکشی اطلاعات از آن استفاده می‌شود.
  2. مسیری که علامت زده شده است، نشان می‌دهد که درخواست باید به چه مقصدی از سرور برورد و چه اطلاعاتی را در سروری که در کوئری به اسم uid و بعد از علامت ؟ نشان داده شده است، واکشی یا اصلاح کند.
  3. نسخه HTTP استفاده شده را نشان می‌دهد.

اکنون مفهوم هدرهای قابل گسترش (Reaming Headers) که در نمونه درخواست نشان داده شده است را باهم بررسی کنیم:

  1. هدر Accept برای نشان دادن نوع یا فرمت محتوایی که مشتری مایل به پذیرفتن آن است استفاده می‌شود.
  2. هدر Referer برای نشان دادن URL ای که درخواست از آن نشات گرفته بکار می‌رود.
  3. هدر Accept Language برای نشان دادن نوع زبانی که کلاینت مایل به پذیرش آن است بکار می‎‌رود.
  4. هدر User-Agent برای نشان دادن جزئیات مرورگری که درخواست از آن ارسال شده استفاده می‌شود.
  5. هدر Acceptencoding برای نشان دادن فرمت انکدی که از سمت کلاینت قابل فهم است استفاده می‌شود.
  6. از هدر Host برای نشان دادن اینکه درخواست را باید سرور ارسال کنیم و چه عملیاتی را باید انجام دهیم، استفاده می‌شود.
  7. از هدر Connection برای نشان دادن وضعیت اتصال بین کلاینت و سرور استفاده می‌شود.
  8. هدر Cookies نگهدارنده مقادیری است که از سرور به کلاینت صادر می‌شود، و کلاینت موظف به ارسال مجدد این مقدار به سرور است.

اینها اطلاعاتی بود که درباره درخواست HTTP بهتر بود بدانیم. اکنون به نمونه پاسخ HTTP می‌پردازیم و توصیف شکل ظاهری و عبارات فنی مرتبط با  پاسخ یا HTTP Response می‌پردازیم.

پاسخ HTTP

نمونه پاسخ HTTP به این شکل است:

 

HTTP/1.1 200 OK
Date: Tue, 19 Apr 2011 09:23:32 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Set-Cookie: tracking=tI8rk7joMx44S2Uu85nSWc
X-AspNet-Version: 2.0.50727
Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 1067

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html xmlns=”http://
www.w3.org/1999/xhtml” ><head><title>Your details</title>

اکنون خط اول را به 3 قسمت تقسیم می‌کنیم و توضیحات بیشتری درباره خط اول ارائه می‌دهیم.

پاسخ پروتکل HTTP

  1. نسخه HTTP که مورداستفاده قرار گرفته است.
  2. کد وضعیت 200 که درست بودن درخواست را نشان می‌دهد و نتیجه را به کلاینت ارسال می‌کند.
  3. یک عبارت متنی که در پاسخ درخواست کلاینت ارسال می‌شود و معتبر بودن درخواست را اعلام می‌کند و مقادیر این عبارت هرچیز می‌تواند باشد.

اکنون به توضیح باقی عبارات فنی که در پاسخ استفاده شده می‌پردازیم:

  1. هدر Server برای توصیف نرم افزار استفاده شده توسط سرور و نسخه نرم افزار استفاده شده بکار می‌رود. همانطور که در نمونه پاسخ بالا میبینید این نرم فزار برای نمونه Microsoft IIS/6.0 است.
  2. هدر Set Cookie برای تخصیص کوکی به کلاینت بکار می‌رود که بعدا توسط کلاینت با درخواست های بعدی‌ای که ازسمت کلاینت ساخته می‌شوند مجددا به سرور ارسال می‌شود.
  3. از هدر Pragma برای تاکید بر عدم ذخیره سازی درخواست در کش مرورگر استفاده می‌شود.
  4. از هدر Expires برای بیان اینکه زمان استفاده از محتوای پاسخ گذشته است و از آن نمی‌توان برای باردیگر استفاده کرد، استفاده می‌شود.
  5. از هدر ContentType برای بیان اینکه بدنه پاسخ شامل چه نوع از محتوایی است استفاده می‌شود که به دنبال آن مرورگر قادر به دیکد کردن آن می‌شود.
  6. از هدر ContentLength برای بیان طول پیام بدنه استفاده می‌شود که در هدر پاسخ به بایت نشان داده شده است.

در ادامه به بحث درباره متدهای HTTP می‌پردازیم.

متدهای HTTP

هدرهای متعددی وجود دارند که دراین بخش با جزئیات برایتان توضیح می‌دهیم:

  1. GET: از هدر GET برای بازگردانی اطلاعات از هدر استفاده می‌شود.
  2. POST: از هدر POST برای اعمال تغییرات در سرور استفاده می‌شود.
  3. HEAD: هدر Head مشابه هدر GET است، بااین تفاوت که Head علی‌رغم برگرداندن تمام هدرهایی که درخواست GET نیز برمی‌گرداند، بدنه پیام پاسخ را برنمی‌گرداند. از این درخواست برای بررسی اعتبار پاسخ قبل از اجرای درخواست GET استفاده می‌شود.
  4. TRACE: از متد Trace برای کارهای تشخیصی استفاده می‌شود. از این هدر برای برگرداندن محتوای دقیق هدر درخواستی که توسط سرور دریافت شده است استفاده می‌شود. از آن به منظور بررسی دستکاری شدن درخواست ها از طریق هر سرور پروکسی ها بین کلاینت و سرور استفاده می‌شود.
  5. OPTIONS : OPTIONS از سرور می خواهد تا متدهای HTTP ای که در به منظور خاصی در دسترس هستند را گزارش کند. معمولا سرور با پاسخی حاوی هدر ALLOW که متدهای دردسترس داخل آن قرار دارند، جواب آن را می‌دهد.
  6. PUT : PUT سعی می‌کند تا با استفاده از محتوای داخل متن درخواست، منابع مشخص شده را در سرور آپلود کند.

و اما بحث شیرین URL ها

URL (Uniform Resource Locator) آدرس یکتای هرسند وب

هر آدرس یکتا (URL ) یک شناسه منحصربفرد برای هر منبع وب است که از طریق آن این منبع قابل ردیابی و ارجاع است. فرمت URL از شکل زیر بایستی پیروی کند:

protocol://hostname[:port]/[path/]file[?param=value]

Protocol: نوع پروتکل استفاده شده را تعیین می‌کند که HTTP است یا HTTPS.

Hostname: برای ذکر منبع سروری که درخواست را باید به آن بفرستیم استفاده می‌شود.

Port: پورت برای ذکر اینکه از چه شماره پورتی برای بازگرداندن منابع استفاده می‌شود، بکار می‌رود. اگر این شماره پورت یک شماره پورت پیش فرض باشد، نیازی به درج شماره پورت نیست.

Path: از Path برای بیان مسیر سروری که منابع را از آن دریافت خواهیم کرد، استفاده می‌شود.

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *