گروه کامپیوتر دانشگاه آزاد

اساتید و دانشجویان دانشگاه آزاد اسلامی

گروه کامپیوتر دانشگاه آزاد

اساتید و دانشجویان دانشگاه آزاد اسلامی

بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِیمِ
زکات علم، نشر آن است. گروه کامپیوتر دانشگاه آزاد با هدف خدمت به دانش آموزان ، دانشجویان و آنهایی که علاقه به برنامه نویسی و طراحی و کلیه امور تخصصی کامپیوتر دارند با هدف نشر علم خدمت رسانی کند امید است کاربران در جهت تحقق این اهداف والا یار و همدم ما باشند . . .

آخرین نظرات

بسم الله الرحمن الرحیم

هر کاری بدون بسم الله شروع شود ابتر است.

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

این بخش شروع به کار نمود

راهنمایی برای دسترسی به مطالب) برای دسترسی به مطالب مورد نیاز دو راه وجود دارد
1- روی عناوین آن کلیک کنید تا به آموزش های آن دسترسی پیدا کنید
2-به ترتیب با نوار پیمایش به تمام آموزش ها دسترسی پیدا کنید.

دسترسی به مطالب با روش اول ->

1-اصطلاحاتی که هر مدیر سایت باید بداند!

IP-2 چیست و چه کاربردی دارد؟

3-لیست کدهای وضعیت HTTP و معنی خطاهای سرور

4-مفهوم پلتفرم (Platform) و فریم ورک (Framework)

5-پروتکل امن https و کدگذاری ssl چیست؟

6-حمله DDOS چیست و چگونه از آن جلوگیری کنیم؟

7-دلایل به هم ریختن قالب وبلاگ ها و سایت ها

8-چگونه سایت یا وبلاگ را برای موتورهای جستجو بهینه سازی کنیم؟

9-رتبه بندی الکسا (Alexa) چیست و چقدر اهمیت دارد؟!

10-پیج رنک چیست و چگونه می توان آن را افزایش داد؟

11-نحوه استفاده از فایل robots.txt در سایت

12-چرا برخی سایت ها و وبلاگ ها رتبه الکسای بهتری دارند؟

13-مشکلات رایج در کدنویسی معتبر و رفع آنها

14-حل مشکل مطالب تکراری (duplicate content) در سایت

1-اصطلاحاتی که هر مدیر سایت باید بداند!

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

سایت


سایت یا به طور صحیح تر وبسایت (website) به فضایی بر روی شبکه جهانی وب یا (World Wide Web) اطلاق می شود که می تواند بسته به اهداف و پدیدآورندگان، به صورت شخصی، اداری، شرکتی، سازمانی و... ایجاد شده باشد، یک وبسایت امروزی معمولا مجموعه ای از صفحات مرتبط با خروجی کدهای HTML یا XHTML است که می تواند دربرگیرنده متن، تصویر، صدا، ویدئو و... باشد، این صفحات توسط ابزارهایی استاندارد مانند مرورگرهای وب، قابل خواندن و استفاده هستند، تفاوت عمده یک سایت با عناوین مشابه مانند وبلاگ و صفحات شخصی، در این است که وبسایت ها معمولا تحت دامنه مستقل و بر روی میزبان (سرور) خریداری شده قرار می گیرند که امکانات کاملتری در اختیار مدیر نسبت به وبلاگ قرار می دهد، در صورتی که امکانات وبلاگ معمولا در چارچوب سرویس دهنده تعریف می شود؛ از نظر فنی صفحات وب تحت پروتکلی به نام HTTP یا Hypertext Transfer Protocol به هم مرتبط هستند (و به نوعی یک شبکه جهانی را تشکیل می دهند)، نوع دیگری از این ارتباط نیز در بستر پروتکل امن HTTPS یا Hypertext Transfer Protocol Secure صورت می گیرد؛ به لحاظ تاریخی شبکه جهانی وب یا (World Wide Web) در سال 1990 میلادی توسط یکی از فیزیک دانان سازمان تحقیقات هسته ای اروپا (European Organization for Nuclear Research یا CERN) به نام Tim Berners-Lee ابداع شد و در 1993 استفاده از آن برای عموم، آزاد گردید، البته در ابتدا هنوز پروتکل HTTP و کدهای HTML وجود نداشت و از این شبکه بیشتر برای نقل و انتقال فایل ها و نامه های الکترونیک به صورت متن فرمت بندی نشده یا plain text استفاده می شد.

CMS


CMS یا Content Management System به سیستم های مدیریت محتوای سایت های وب اطلاق می شود که به کمک آنها، کار ایجاد و مدیریت وبسایت ها تا حدود زیادی آسان و سریع می گردد، از CMS برای ایجاد سایت، ارسال و مدیریت مطالب، دریافت نظرات کاربران، ایجاد صفحات جانبی و... استفاده می شود، امکانات و انواع CMS های وب بسیار متفاوت و متنوع هستند و معمولا تحت دو زبان پرکاربرد PHP و ASP نوشته می شوند، یک مدیر سایت برای انتخاب یک CMS مناسب باید حتما اهداف و شرایط خود را در نظر بگیرد و شناخت کاملی از سیستمی که می خواهد از آن استفاده کند داشته باشد، تقریبا تمام CMS ها دارای نقاط ضعف و قوت منحصر به فردی هستند، لذا انتخاب مناسب ترین گزینه، باید با دقت انجام شود، از جمله رایج ترین عناوین سیستم های مدیریت محتوای متن باز یا Open Source می توان جوملا (Joomla)، مامبو (Mambo)، وُردپرس (Wordpress)، ام تی (Movable Type)، نیوک (PHP Nuke)، دروپال (Drupal) و... را نام برد.

دامنه


دامنه یا Domain عناوین اختصاصی آدرس های وب هستند که به منظور تسهیل دسترسی و مدیریت نشانی سایت ها و صفحات وب ایجاد گردیده اند، هر domain با یک DNS یا Domain Name System مدیریت می شود که تعیین کننده میزبان و IP یا Internet Protocol آن است، جالب است که عناوین دامنه ها بیشتر برای انسان ها یا همان کاربران حقیقی مهم است، اما برای مرورگرها و در کل از لحاظ فنی، آدرس یک دامنه با یک IP مشخص مربوط به DNS آن تعریف می شود، یعنی وقتی یک دامین را درخواست می کنید، مرورگر به دنبال IP آن می گردد نه عنوان آن، آدرس دسترسی به یک دامنه معمولا با www یا بدون آن شروع شده و به پسوندهایی مثل com، org، net، ir و... ختم می شود، در انتخاب نام یک دامنه چند نکته اهمیت زیادی دارد، از جمله کوتاه بودن، مفهوم داشتن، راحتی در نوشتن و خواندن نام دامنه. با ثبت یک دامنه مالکیت آن برای دوره ای (مثلا یک ساله یا پنج ساله) به شما تعلق می گیرد و هیچ فرد دیگری نمی تواند عین آن را ثبت کند، با انقضای دوره نیز می توانید مجددا دامنه خود را تمدید نمائید و تا هر زمان این کار را تکرار کنید و مالکیت آن را خود داشته باشید؛ به لحاظ تاریخی استفاده از دامنه ها ی وب  توسط آژانس تحقیقات پیشرفته در زمینه شبکه ARPANET  یا (Advanced Research Projects Agency Network) در سال 1983 میلادی بنیانگذاری شد.

هاست


هاست یا Host در اصطلاح به میزبان سایت های وب گفته می شود، هنگامی که قصد راه اندازی یک سایت را دارید، نیاز به سرور، مقداری حافظه ی هارددیسک بر روی آن سرور و پهنای باند جهت سرویس دهی به بازدیدکنندگان ضروری است، این خدمات را معمولا شرکتهایی تحت عنوان هاستینگ ارائه می دهند که ممکن است شرایط، کیفیت و هزینه خدماتشان متفاوت باشد، معمولا شرکت های معتبر در مراکزی تحت عنوان دیتاسنتر یا محل نگهداری سرورهای وب، که طبق اصول و استاندارهای ایمنی از انواع حوادث محافظت می  شوند، سرور های اختصاصی خود را نگهداری می کنند و عده ای نیز به خاطر هزینه بر بودن این کار و دردسرهای احتمالی، ترجیح می دهند سرورهایشان را در محل هایی به جزء دیتاسنتر نگهداری کنند یا به عنوان واسطه با شرکت های بزرگتر همکاری داشته باشند که این مسائل معمولا باعث بروز مشکلاتی مخصوصا برای کاربران می شود، در انتخاب یک هاست مناسب حتما به محل نگهداری سرورها، امکانات، کیفیت خدمات و پشتیبانی آن حتی المقدور با پرس و جو از کاربران آن، اطلاع کسب کنید، انتخاب برخی هاست های بی کیفیت مخصوصا برای کسانی که آشنایی و مهارت لازم در انتقال سایت به میزبانی دیگر را ندارند، می تواند دردسرهای زیادی ایجاد کند.

فضای هاست


فضای هاست به میزان حجمی گفته می شود که بر روی سرور (اختصاصی یا اشتراکی) به شما تعلق می گیرد، یعنی مثلا فضای 200 مگابایت یعنی تا 200 مگابایت می توانید اطلاعات و فایل روی آن سرور داشته باشید، این فضا معمولا با پرداخت هزینه ی بیشتر، افزایش خواهد یافت که این امر بستگی به نوع پلان هایی دارد که میزبان شما در نظر می گیرد، سعی کنید مقدار فضای مورد نیاز برای سایت خود را تخمین زده و در عین حال همیشه اندکی بیش از میزان تخمین زده، آن را در نظر بگیرید، چون در اکثر کنترل پنل ها، به حداقلی از فضا جهت نگهداری اطلاعات مربوط به log ها، خطا ها، آمار، ایمیل ها و... نیاز است.

پهنای باند


پهنای باند یا Band Width سرور، به حداکثر سقف مجاز انتقال اطلاعات (دانلود و آپلود) بین سرور شما و مرورگر کاربران، معمولا به صورت ماهیانه اطلاق می شود، دقت کنید که هر نوع دریافت یا ارسال اطلاعات شامل این پهنای باند می شود، مثلا دیدن یک سایت و بارگذاری فایل هایی مثل تصویر، استایل css، صفحات html و... در محاسبه میزان مصرف پهنای باند به حساب می آید، حتی دیدن سایت شما توسط ربات های خزنده نیز مقداری از فضای سرور را مصرف می کند (البته چون ربات ها معمولا به متن و تصاویر بیشترین اهمیت را می دهند، میزان حجم مصرفی آنها خیلی کم تر است)، لذا همیشه به این نکته توجه کنید و تا حد ممکن رعایت استانداردهای مصرف بهینه پهنای باند را مد نظر داشته باشید، شاید تصور کنید در سرورهای با پهنای باند به فرض نامحدود، این نکته اهمیتی ندارد، البته از نظر مصرف منابع حق با شماست، اما برای کاربران این موضوع اهمیت زیادی دارد، چه به لحاظ سرعت بارگذاری و چه به لحاظ مسائل مالی و میزان پهنای باندی که آنها از سرویس دهنده اینترنت خود دریافت می کنند.

کنترل پنل


کنترل پنل به محیطی گفته می شود که در آن می توانید امکانات مربوط به سایت خود را مدیریت کنید، سرورهای مختلف معمولا از برنامه های متفاوتی بدین منظور استفاده می کنند، مثلا برنامه Cpanel در سرور لینوکس بیشترین طرفدار را دارد، برخی نیز از Directadmin استفاده می کنند، در سرور های ویندوز نیز معمولا از Parallels Plesk یا کنترل پنل Parallels Helm استفاده می کنند؛ دقت داشته باشید، بیش از اینکه به نام کنترل پنل توجه کنید، به سرویس های ارائه شده توسط هاست خود دقت کنید، همیشه قبل از انتخاب یک کنترل پنل، سعی کنید با پیش نمایشی از آن کار کنید تا با چند و چون آن آشنا شوید.

نام سرور یا DNS


اصطلاح نام سرور یا DNS که به آن کارگذار دامنه نیز می گویند، یکی از حساس ترین مسائل برای یک سایت محسوب می شود، DNS یا Domain Name System در واقع اسامی تخصیص داده شده برای کامپیوترها (سرورها) در بستر شبکه اینترنت هستند که باعث شناسایی و تبدیل (resolve) عنوان نام سرور به IP اختصاصی آن می شود، به این صورت وقتی به یک دامنه مراجعه می شود، در واقع به IP مربوط به DNS سرور آن رجوع شده است، در واقع این سیستم شباهت زیادی به کد تلفن کشورها، کد شهرستان و شماره تماس اختصاصی افراد دارد، با این تفاوت که در اینجا دامنه هایی متشکل از حروف و اعداد به نام سرور و سپس به IP سرورها تبدیل شده و بر این اساس سایت های مختلف از هم شناسایی و تفکیک می شوند، یک تفاوت عمده دیگر در این است که آدرس IP سرور می تواند بدون تغییر عنوان DNS آن، تغییر کند، مثلا DNS فرضی ns1.example.com ممکن است مدتی IP خاصی داشته باشد و سپس به شماره دیگری تغییر کند، بدون اینکه تاثیری در نام آن و روند کاری سایت های زیر مجموعه داشته باشد؛ اعمال تغییرات بر روی DNS دامنه سایت، معمولا از طریق کنترل پنل هایی توسط شرکت های مجاز برای ثبت دامنه، ارائه می شود.

سرور لینوکس


سرور لینوکس به سروری با سیستم عامل مبتنی بر لینوکس (Linux) گفته می شود، همانطور که می دانیم لینوکس یکی از معرف ترین سیستم عامل های متن باز یا open source است که در زمینه سرورهای وب، گزینه بسیار مناسبی برای برنامه های مدیریت سایت، مخصوصا به زبان PHP محسوب می شود و از نرم افزارهای Apache HTTP Server، SSH server و... به خوبی پشتیبانی می کند،  نگهداری و هزینه سرور های مبتنی بر لینوکس معمولا به صرفه تر از سرورهای ویندوز بوده و از سرعت و کیفیت بسیار خوبی نیز برخوردار است (البته به شرطی که توسط شرکت معتبری نگهداری و پشتیبانی شود)؛ اگر از سیستم های مدیریت محتوا مبتنی بر PHP استفاده می کنید، یا قصد دارید سیستم مدیریت سایتتان را به PHP برنامه نویسی کنید، توصیه می کنیم حتما از سرور لینوکس برای میزبانی آن استفاده کنید.

سرور ویندوز


در مقابل سرورهای لینوکس، معمولا سرورهای تحت سیستم عامل ویندوز، ساخت شرکت مایکروسافت قرار می گیرند، ویندوز در مقایسه با لینوکس کارکردهای خاص خودش را دارد و نمی توان گفت که کدام یک بهتر است (بستگی به هدف و نوع زبان برنامه نویسی شما دارد)، مثلا برنامه نویسان زبان ASP الزاما باید در بستر سرور ویندوز سایت خود را برپاکنند،  از طرفی هزینه نگهداری سرورهای ویندوز به دلیل متن باز نبودن و نیاز به پرداخت هزینه و خرید برنامه های مورد نیاز، معمولا بیشتر است، اگر به زبان ASP برنامه نویسی می کنید، ناچارید از سرورهای تحت سیستم عامل ویندوز استفاده کنید، البته سرعت و سازگاری سرورهای ویندوز نیز به خوبی لینوکس است و در ضمن این سرورها معمولا از کدهای PHP نیز در کنار ASP پشتیبانی می کنند.

سرور مجازی


سرور مجازی به حالتی گفته می شود که یک سرور، منابع فیزیکی خود را بین چند دامنه (در واقع بین چند DNS)، به طور مجازی به اشتراک می گذارد، درست مثل حالتی که چند سیستم عامل در یک کامپیوتر نصب شود، با این تفاوت که در اینجا ممکن است همه ی دامنه ها یا تعدادی از آنها به طور همزمان از منابع فیزیکی سرور استفاده کنند، در واقع یک سرور مجازی فضای مجزا و اختصاصی به صورت شبیه سازی شده با یک سرور حقیقی است ولی در واقع فضای سرور بین چند سرور مجازی تقسیم شده است و مشخص است که کیفیت سرورهای مجازی به اندازه یک سرور حقیقی نیست؛ اصطلاح سرور مجازی را نباید با هاست اشتراکی اشتباه گرفت، یک سرور ممکن است به چند سرور مجازی و هر سرور مجازی خود به چند سایت اشتراکی تقسیم شود، بهترین حالت برای سایت های اشتراکی قرار گرفتن روی سرور حقیقی است نه سرور های مجازی؛ سرورهای مجازی بیشتر برای دارندگان سایت های چندگانه و پربازدید مناسب است.

uptime سرور


uptime به زمان تضمین شده ای گویند که طی آن یک سرور بدون وقفه و مشکلی، به سرویس دهی می پردازد، البته در مورد برخی میزبان ها این عبارت چندان مفهومی ندارد، علی رغم اینکه خیلی از آنها عناوینی چون آپ تایم 99 درصد و برخی حتی 100 درصد را شعار می دهند، اما در عمل نهایتا به بالای 95 درصد ختم می شود، البته برخی شرکت های معتبر نیز تلاش می کنند که به وعده های خود عمل کنند تا سایت شما نزدیک به 100 درصد زمان آپتایم داشته باشد، برای اطمینان از اینکه هاست مطمئنی را انتخاب می کنید، بهتر است از آپتایم سایتهای میزبانی شده توسط آن، پیش از خرید، اطلاعات کسب کنید.

down شدن سرور


down شدن سرور در اصطلاح به حالتی گویند که عملکرد عادی سرور به هر دلیل دچار اختلال شود و صفحه درخواستی شما، بارگذاری نگردد، این امر ممکن است دلایل زیادی داشته باشد و تقریبا برای هر سروری پیش می آید، اما اینکه این وقفه چقدر طول بکشد و چند وقت به چند وقت تکرار شود، مسئله ی بسیار مهمی است، در هاست های معتبر به دلیل رعایت مسائل فنی و پیش بینی شدن مسائل احتمالی، معمولا سرورها دیرتر دچار مشکل می شوند و در صورت بروز، مشکل به سرعت رفع می شود، اما در برخی هاست های دیگر به دلیل ضعف سخت افزاری سرور، پشتیبانی ضعیف و... ممکن است این نوع مشکلات زمان بیشتری به طول بکشند و در فواصل کوتاهتری تکرار شوند.

فایل htaccess


htaccess در واقع فایلی متنی (اما بدون پسوند) است که در سرور های مختلف (مخصوصا سرور Apache) برای کنترل عملکردهای آن مورد استفاده قرار می گیرد، این فایل در ریشه سایت یا بین فولدرهای آن به صورت htaccess. (بدون فرمت) وجود دارد (اگر این فایل در سرور شما نیست، می توانید آن را ایجاد کنید) و درون آن دستوراتی خاص به صورت متنی و حروف با قاعده نوشته می شود، به دلیل اینکه فایل  htaccess به صورت مجزا از تنظیمات اصلی سرور است و برای سایتهای مختلف می تواند متفاوت باشد، امروزه از آن به وفور، مخصوصا در سرورهای اشتراکی، برای دوباره نویسی لینک های داینامیک به استاتیک (Rewriting)، کنترل دایرکتوری ها با کلمه عبور (Authorization)، تنظیم اطلاعات مربوط به یونیکد صفحات، مسدود کردن IP، تنظیم و سفارشی کردن صفحات خطا  و ... استفاده می شود؛ در مقابل فایل دیگری به نام httpd.conf وجود دارد که به طور مستقیم و یکپارچه تنظیمات سرور را مدیریت می کند.

فایل php.ini


در کنار فایل htaccess که تنظیمات سرور را مدیریت می کند، در سیستم های مبتنی بر PHP معمولا در سرورها می توان از فایل دیگری به نام php.ini برای کنترل رفتارها و امکانات مربوط به مفسر PHP استفاده کرد، البته این مسئله تا حدود زیادی مخصوصا در سرور های اشتراکی، به اختیارات تعریف شده توسط مدیران هاست برمی گردد، از php.ini می توان به فرض برای غیر فعال یا فعال کردن برخی ویژگی ها در PHP استفاده کرد و تنظیمات پیش فرض را تغییر داد.

پایگاه داده


پایگاه داده یا دیتابیس (Database) به محل نگهداری اطلاعات معمولا به صورت داینامیک گفته می شود، به فرض در یک سیستم مدیریت محتوا، وقتی مطلبی را ارسال می کنید، این مطلب در فیلد های خاصی که درون دیتابیس با عناوین مشخص تعریف شده، ذخیره می گردد تا در هنگام لزوم از اطلاعات آن استفاده شود، در واقع شیوه و ساختار دیتابیس ها شباهت زیادی به دنیای واقعی و به فرض قفسه های یک کتابخانه دارد، در حال حاضر بیشتر سایت ها از این شیوه استفاده می کنند و تقریبا مدیریت یک وبسایت بزرگ بدون استفاده از پایگاه داده غیر قابل تصور است، تنها سایتهای کوچک با صفحات استاتیک و ثابت، آن هم به تعداد کم، بی نیاز از دیتابیس هستند و در سایر موارد بهترین گزینه، استفاده از آن است، دیتابیس ها انواع و کارکردهای مختلف دارند ولی در کل بسیار به هم شبیه هستند، از جمله مهم ترین سیستم های مدیریت پایگاه داده می توان Oracle، Microsoft SQL Server، MySQL و SQLite را نام برد، البته امروزه از MySQL برای برنامه نویسی با PHP و از Microsoft SQL Server برای برنامه نویسی با ASP بیشتر استفاده می شود؛ آموختن اصول کار با پایگاه داده در صورت آشنایی شما با یکی از زبان های برنامه نویسی سمت سرور، کار چندان سختی نیست و تا حدود زیادی می توان طی مدتی کوتاه، بسیاری از مطالب را فرا گرفت.

ایمیل اختصاصی


تصور بسیاری از مردم از ایمیل، محدود به سرویس های رایگان ارائه شده توسط شرکت های معروفی چون یاهو، گوگل، مایکروسافت و... است، اما وقتی برای خود سایتی ایجاد می کنید، در قریب به اتفاق موارد، می توانید ایمیل اختصاصی با عنوان دامنه خود داشته باشید، در سرورهای مختلف و در کنترل پنل آنها قابلیت ایجاد ایمیل های اختصاصی برای دامنه شما وجود دارد و پس از ایجاد حساب کاربری و آدرس، می توانید از برنامه های مدیریت ارسال و دریافت ایمیل مانند Outlook Express یا برنامه های مشابه دیگر استفاده کنید.

DDOS


ddos یا distributed denial of service attack به نوعی حمله و ایجاد اختلال در سرورهای وب گفته می شود که طی آن، معمولا در یک زمان واحد، تعداد زیادی درخواست به یک سرور ارسال می شود و این عمل موجب مختل شدن و نهایتا از کار افتادن آن سرور می شود، ddos یکی از رایج ترین شیوه های ایجاد اختلال برای سرورها در وب است که البته بسته به میزان قدرت مهاجم، قابلیت های نرم افزاری و سخت افزاری سرور، آسیب پذیری نیز در برابر آن متفاوت است، حمله های ddos ممکن است خیلی کوتاه یا در مقابل اگر از آنها جلوگیری نشود، خیلی به طول انجامند و در این مدت سایت شما به کندی بارگذاری شده یا به کل down شود.

MYSQL/SQL Injection


اصطلاح SQL Injection یا MySQL Injection به فرایند نفوذ به پایگاه داده گفته می شود که طی آن از نقاط ضعف برنامه نویسی یک سایت برای تخلیه یا حذف اطلاعات ذخیره شده در پایگاه داده استفاده می شود، رایج ترین روش در این شیوه، استفاده از فرم های وب یا آدرس لینک های یک سایت است، مهاجم با افزودن دستورات خود به لینک های یک سایت یا با فرستادن دستورات خود به صورت متنهای داخل فیلد و فرم های HTML سعی می کند دستوراتی بر روی پایگاه داده اعمال کرده و اطلاعات شما را دستکاری کند، کنترل این نوع حملات در عین سادگی کار حساسی است و باید با دقت بالا تمام کدها و حفره ها بررسی شوند و حتما هر نوع اطلاعات که مخصوصا توسط کاربران دریافت می شود، به صورت سیستماتیک و چند لایه ایمن سازی شوند، آشنایی با شیوه های حفاظت از پایگاه داده در مقابل این نوع حملات نیازمند طرح مباحثی بیشتر است که در این بحث تحت آموزش نمی گنجد.

IP-2 چیست و چه کاربردی دارد؟

دنیای تکنولوژی پر از ناشناخته هایی است که هر کدام از ما نهایتا توانسته ایم بخش کوچکی از آن را درک یا تجربه کنیم، هر روز با عبارات و پدیده های جدیدی روبرو می شویم که ناخودآگاه ذهن جستجوگرمان را به کاوش وامی دارند، عرصه وب نیز به عنوان زیر مجموعه ای از این دنیای پهناور، ناگفته ها و ناشناخته های زیادی می تواند در خود به صورت بالقوه و نهفته داشته باشد که البته دانستن تمام آنها نه لازم است و نه مقدور، اما برخی از موارد را می توان به عنوان دانش عمومی وب، مطالعه کرد و به خاطر سپرد، از این رو در این مطلب قصد داریم در حد امکان بپردازیم به یکی از این دانستنی های عمومی و آن اینکه ip چیست و چه کاربردی دارد؟

IP چیست؟


IP (آی پی) که آن را IP address هم می گویند در واقع مخفف عبارت Internet Protocol address یا آدرس های پروتکل اینترنت (شبکه جهانی) است که به صورت یک سری اعداد با قاعده، به هر وسیله ای (اعم از کامپیوتر، تلفن همراه، چاپگر و...) که به شبکه وب متصل شود، اختصاص داده می شود، IP در واقع یک شماره شناسایی یکتا برای یک ارتباط تحت وب است که با آن کامپیوترهای مختلف (یا سرورهای مختلف) در شبکه گسترده وب از هم بازشناخته می شوند، بدین ترتیب موقعیت جغرافیایی کاربر، اطلاعات اتصال به شبکه و... قابل شناسایی و پیگیری است، البته باید توجه نمود که بیشتر کاربران خانگی از IP اختصاص داده شده توسط سرویس دهنده خود (ISP یا Internet service provider) استفاده می کنند، لذا IP آنان در واقع شماره اختصاص داده شده توسط شرکت خدمات دهنده اینترنت است که معمولا تعداد و سری خاصی از IP ها را برای اتصال در اختیار دارد، از این رو IP شما در هر بار اتصال به اینترنت ممکن است تغییر کند، منتها کشور، نام و موقعیت جغرافیایی سرویس دهنده شما همان اطلاعات ISP خواهد بود، چون شما از یکی از کانال ها و شماره های اتصال آن شرکت استفاده می کنید.

IP نسخه 4


در ابتدا که استاندارد های شبکه وب تعریف گردید، از اعدادی بر مبنای 32 بیت برای ایجاد شماره های IP استفاده شد که به آن، آدرس های اینترنتی نسخه 4 می گویند (IPv4 یا Internet Protocol Version 4)، در این نسخه که هم اکنون نیز در حال استفاده است، از ترکیب اعداد بر مبنای 32 بیت نهایتا تا سقف 4.3 میلیارد (4.294.967.296) آدرس اختصاصی قابل ایجاد است، از طرفی در این نسخه از آدرس های پروتکل اینترنت تعداد 18 میلیون آدرس برای شبکه های شخصی (private networks شامل سری 10.0.0.0 الی 10.255.255.255 تعداد 16777216 آی پی آدرس، 172.16.0.0 الی 172.31.255.255 تعداد 1048576 آی پی آدرس و 192.168.0.0 الی 192.168.255.255 تعداد 65536 آی پی آدرس) و 270 میلیون آدرس نیز برای کامپیوترهای میزبان شبکه (multicast) اختصاص داده شد (multicast به طور ساده به معنی تکنیکی است که در آن با اختصاص یک IP به یک ابر سرور، امکان پشتیبانی از تعداد زیادی سرورهای زیر مجموعه با آن فراهم می شود، multicast ها در واقع به نوعی سرورهای اصلی وب محسوب می شوند).

ساختار IP نسخه 4


از لحاظ بررسی ساختاری، IP های نسخه چهار از چهار قسمت مجزا تشکیل می شوند که بین آنها یک نقطه (.) قرار می گیرد، در هر قسمت نیز می توان از یک عدد 1 تا 3 رقمی استفاده کرد (8 بیت) که شامل 0 تا 255 می شود (این اعداد بر مبنای باینری  محاسبه شده اند)، به طور مثال: 46.21.88.166 یا به فرض آی پی پیش فرض ابزارهایی که به شبکه متصل نیستند به صورت 127.0.0.1 است که به آن localhost نیز می گویند، به این ترتیب هر وسیله ای که به اینترنت متصل می شود، دارای یک شماره شناسایی خاص و یکتا است که موقعیت آن را (یا در بیشتر موارد موقعیت سرویس دهنده آن را) مشخص می کند، اما شاید این سوال به ذهنتان برسد که کشور و موقعیت کاربر را چگونه از شماره آی پی آن بدست می آورند؟ پاسخ این است که اطلاعات هرIP از دو قسمت تشکیل شده است، قسمت مربوط به شبکه یا سرور و قسمت مربوط به وسیله ای که به شبکه متصل است، به طور مثال سه قسمت اول یک IP ممکن است نشانگر ISP باشد که به شما سرویس اینترنت ارائه می دهد و عدد آخر نشانگر شماره وسیله ای است که به آن سرویس دهنده متصل شده است، لذا ممکن است چند IP متفاوت به شکل نمونه زیر از یک خدمات دهنده اینترنت داشته باشیم:
46.21.88.166 - 46.21.88.167 - 46.21.88.168
از آنجایی که اطلاعات سرویس دهنده اینترنت و مالک حقیقی آی پی در منبع رسمی، مستقل و بین المللی  ارائه دهنده مجوز آدرس های اینترنتی ICANN یا (International Company for the Assignment of Names and Numbers) ثبت شده است، لذا هویت آن نیز مشخص و در دسترس است و از طرفی اطلاعات مشترکین نیز درISP موجود است، لذا اگر شرایط اقتضاء کند، می توان موقعیت دقیق کاربر را مشخص کرد (البته برای عموم معمولا تنها موقعیت ISP قابل ردیابی است، اما برای سازمانهای امنیتی، موقعیت کاربران نیز در شرایطی قابل دستیابی است)، باید توجه داشت که معمولا ISP ها از پروتکل DHCP یا (Dynamic Host Configuration Protocol) استفاده می کنند، بدین معنی که با هر بار اتصال شما به اینترنت، به صورت داینامیک یکی از آدرس های آزاد شده به شما اختصاص پیدا می کند و با قطع اتصال، ممکن است IP مورد نظر به فرد دیگری اختصاص داده شود، لذا IP در این نوع خود، یک شماره همیشگی نیست و در هر اتصال معمولا متفاوت خواهد بود (به این نوع آی پی ها به اصطلاح داینامیک می گویند).

IP نسخه 6


در ابتدای شکل گیری شبکه اینترنت، تعداد 4.3 میلیارد آی پی آدرس رقمی بود که کسی گمان نمی کرد روزی به انتهای ظرفیت خود برسد، اما به مرور و با گسترش فعالیت های تحت وب و لزوم اتصال دستگاههای مختلف به شبکه که هر کدام نیازمند شماره شناسایی ویژه ای بودند و از طرفی خرید شمار زیادی از IP ها توسط شرکت ها و بلا استفاده ماندن آنها سبب شد که تحقیقات بر روی نسل جدیدی از آدرس های اینترنتی شروع شود، این کار تحقیقاتی بعدها در قالب نسخه 5 ارائه شد که تنها جنبه آزمایشی داشت، اما با آمدن نسخه 6 از آدرس های اینترنتی، مسئله محدودیت تقریبا برای همیشه حل شد، چرا که در این سری از IP ها، شماره ها بر مبنای 128 بیتی در نظر گرفته شده که نتیجه، رقم بسیار قابل توجهی است (3.403 ضرب در 10 به توان 38، یعنی چیزی بیش از 300,000,000,000,000,000,000,000,000,000,000,000,000 آی پی آدرس!)،  از این رو از سال 2012 به بعد به تدریج سازگاری و انتقال به سوی IP های نسخه 6 آغاز شده و همچنان ادامه دارد، البته به دلیل چالش های نرم افزاری و سخت افزاری انجام این کار، عمل مهاجرت از آی پی نسخه 4 به 6 ممکن است چندین سال به طول انجامد؛ در زیر چند نمونه از این نسخه از آدرس های وب را ملاحظه می کنید.
3ffe:1900:4545:3:200:f8ff:fe21:67cf - 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A - E3D7:0000:0000:0000:51F4:9BC8:C0A8:6420
در این نسخه از بلاک های 16 بیتی (هشت بلاک 16 بیتی) استفاده شده که در مجموع یک آدرس 128 بیتی را تشکیل می دهند که علاوه بر اعداد از حروف بر مبنای استاندارد hexadecimal (شبیه آنچه که در css دیده ایم) استفاده شده است.

آیا انتقال به آی پی نسخه 6 تاثیری هم بر کاربران دارد؟


شاید این پرسش به ذهنتان برسد که این نقل و انتقال که از آن صحبت کردیم، آیا تاثیری هم در امورات روزمره مربوط به کامپیوتر و اینترنت دارد یا خیر؟ آیا باید کار خاصی انجام دهیم؟
پاسخ به این سوال این است که به عنوان یک کاربر عادی، این انتقال در بسیاری جهات از نظرهای ما مخفی است و توسط شرکت های ارتباطی و سرورها انجام می شود، اما اگر در سیستم شما نرم افزارهایی مبتنی بر شبکه و از مدت ها پیش نصب شده باشند که همچنان از فناوری های قدیمی استفاده می کنند، شاید نیاز به بروز رسانی هایی باشد، اما در کل مهاجرت از آی پی های نسخه 4 به آی پی های نسخه 6 می تواند حیات آینده وب را تضمین کند و لذا به دردسرهای احتمالیش (بیشتر برای شرکت ها و خیلی خیلی کم تر برای کاربران) می ارزد.

IP های استاتیک و داینامیک چیست؟


در پایان این مطلب بد نیست اشاره ای هم داشته باشیم به آی پی های استاتیک (Static) و داینامیک (Dynamic)؛ همان طور که پیش از این به طور مختصر گفتیم، در مجموع، آدرس های اینترنتی می توانند به دو صورت داینامیک (پویا) یا استاتیک (ثابت) مورد استفاده قرار گیرند، منظور از داینامیک بودن یک IP این است که با هر بار اتصال یک وسیله به اینترنت، یک شماره شناسایی به آن اختصاص داده می شود که این شماره در واقع از بین یک سری آدرس ها به صورت اتوماتیک و تحت پروتکل های سرور (DHCP یا Dynamic Host Configuration Protocol) انتخاب می شود، از این رو اطلاعات هر آی پی در واقع اطلاعات سرویس دهنده ای است که آن آدرس را خریداری کرده و در اختیار دارد، در مقابل نوع دیگری از آدرس های اینترنتی وجود دارد که معمولا طی بازه زمانی بلند مدت، به یک کامپیوتر (معمولا سرور) اختصاص داده شده و موقعیت جغرافیایی و سایر مشخصات آن نیز مشخص و ثبت شده است، به این صورت امکان برقراری یک ارتباط با ثبات بیشتر برای سایر سرورهای متصل به شبکه یا سایر کاربرانی که قصد دارند با استفاده از آی پی، با شما در ارتباط باشند فراهم می شود، آی پی های استاتیک کاربرد های خاصی در اینترنت دارند، از جمله برقراری برخی قابلیت ها مانند VOIP یا (Voice over Internet Protocol)، بازی های آنلاین و هر آنچه که نیاز به موقعیت یابی راحت تر در اینترنت دارد، به همین دلیل این نوع آدرس ها ممکن است به جهت شناسایی و ردیابی راحت تر، مورد هجوم حمله های مخرب یا سوء استفاده های دیگر نیز قرار گیرند که این موضوع تا حدود زیادی به رعایت مسائل امنیتی در سرور بستگی دارد؛ باید توجه نمود که آی پی ها در ساختار هیچ فرقی با هم ندارند و تنها نوع استفاده از آنها سبب می شود که عنوان داینامیک یا استاتیک بر آنها بنهیم.

3-لیست کدهای وضعیت HTTP و معنی خطاهای سرور

هنگامی که در بستر پروتکل HTTP یا (Hypertext Transfer Protocol) در وب در حال گشت و گذار و مرور صفحات مختلف هستیم، با هر آدرس url ای که از طریق مرورگر خود از سرور سایت ها ی  مختلف درخواست می کنیم، کدهایی در پس زمینه بین واسط کاربری ما (مرورگر) و سرور رد و بدل می شوند که به آنها در اصطلاح کدهای وضعیت HTTP یا (HTTP response status codes) می گویند، این کدها توسط کنسرسیوم ها و بنیاد های جهانی استاندارد سازی وب از جمله IETF یا (Internet Engineering Task Force) و W3C یا (World Wide Web Consortium) تعریف و سازمان دهی شده اند و امروزه تقریبا سرور یا مرورگری وجود ندارد که از اصول آنها پیروی نکند،  کدهای وضعیت  HTTP چه به لحاظ فنی و چه به لحاظ کاربری، کاربردهای فراوانی دارند و لذا آشنایی با جزئیات و مفاهیم آنها می تواند به میزان زیادی به توسعه دانش و اطلاعات عمومی وب، کمک کند.

کدهای وضعیت HTTP را چگونه بررسی کنیم؟


برای مشاهده کدهای وضعیت HTTP، می توانید از قابلیت های مرورگرها (مخصوصا مرورگرهای جدید) برای توسعه دهندگان وب (web developers) استفاده کنید، معمولا در مرورگرهایی مثل فایر فاکس، گوگل کروم، اپرا و... قسمتی تحت عنوان ابزارهای توسعه دهندگان (developers tools) یا عناوینی شبیه آن وجود دارد که تمام فعل و انفعالات واسط کاربری (user agent) و سرور را نشان می دهد.

تفاوت HTTP 1/0 و HTTP 1/1


قبل از اینکه به بررسی کدهای وضعیت HTTP بپردازیم، بد نیست اشاره ای داشته باشیم به نسخه های مختلف آن، اعدادی که در مقابل تیتر بالا مشاهده می کنید (1/0 و 1/1) در واقع نسخه های مختلف پروتکل HTTP هستند که توسط گروه HTTP-WG که خود زیر مجموعه IETF یا (Internet Engineering Task Force) است، توسعه یافته، HTTP 1/0 نسخه ابتدایی و قدیمی این پروتکل است که در ابتدا مورد استفاده قرار می گرفت و به دلیل نقایص و نقاط ضعفی که وجود داشت، به تدریج توسعه داده شد و استاندارد HTTP 1/1 شکل گرفت، در بستر نسخه جدید پروتکل HTTP کدهای وضعیت بیشتری تعریف شده و امروزه بیشتر سرور ها و مرورگرها از آن استفاده می کنند.

کدهای سری 100، مربوط به اطلاعات (Informational)


اولین سری از کدهای HTTP، با عدد 100 شروع می شود که در مورد نقل و انتقال بسته های اطلاعات مثل ارسال و دریافت فایل، کاربرد دارند و حالت موقت پاسخ سرور را نشان می دهند، به فرض وقتی از متد POST در فرم های وب استفاده می کنیم، دریافت کد 100 به معنی این است که سرور درخواست ما را پذیرفته و فرایند پردازش اطلاعات ادامه دارد، االبته بدون ارسال کد 100 نیز این فرایند ادامه می یابد لذا ارسال آن از طرف سرور ضروری نیست و حتی در مرورگرهایی که از نسخه HTTP/1.0 استفاده می کنند، این کد قابل فهم و پردازش نیست.

کد 100، ادامه ارسال (Continue)


کد 100 به معنی این است که سرور درخواست مرورگر را دریافت کرده است و مرورگر می تواند ادامه اطلاعات را ارسال نماید، این کد مخصوصا در مواقعی که حجم زیادی از داده ها به فرض از طریق فرم های وب و متد POST ارسال می شود، کاربرد دارد و مرورگر با ارسال هدر Expect: 100-continue وضعیت سرور را جهت آمادگی ادامه ارسال اطلاعات بررسی می کند، اگر در جواب کد 100 را دریافت کند، ادامه اطلاعات را ارسال می کند، در غیر این صورت کد 417 Expectation Failed دریافت می شود.

کد 101، تعویض پروتکل ها (Switching Protocols)


کد 101 به معنی درخواست مرورگر از سرور جهت تعویض پروتکل نقل و انتقال داده است، در صورتی که سرور این تعویض پروتکل را مفید یا ضروری ارزیابی کند، از درخواست مرورگر پیروی خواهد کرد، به فرض تعویض پروتکل HTTP 1/0 به نسخه HTTP 1/1 می تواند مفید باشد، یا استفاده از پروتکل های real-time و همزمان (synchronous) نیز به همین صورت است، مثلا در برنامه هایی که از آژاکس (Ajax) استفاده می کنند، این کد می تواند کاربرد داشته باشد.

کد 102، در حال پردازش (Processing)


از آنجایی که درخواست های مرورگر از سرور ممکن است شامل انجام کارهای مختلفی باشد که هر کدام نیاز به پردازش جداگانه دارند، سرور با ارسال کد 102 به مرورگر می گوید که عملیات درخواستی، دریافت شده و در حال پردازش است، به این صورت مرورگر در انتظار پاسخ کامل سرور بوده و  از قطع ارتباط به دلیل به پایان رسیدن حداکثر زمان (time out)، جلوگیری می شود.

کدهای سری 200، درخواست موفق (Success)


کدهای سری 200، به این معنی است که درخواست ارسالی واسط کاربری (که می تواند مرورگر یا ابزار دیگری باشد)، با موفقیت دریافت، موافقت، پردازش و پاسخ داده شده است، کدهای سری 200 معمولا به معنی بی نقص بودن درخواست و عملکرد صحیح سرور است.

کد 200، پاسخ موفق (OK)


کد استاندارد HTTP در وب، با عدد 200 نشان داده می شود، دریافت پاسخ 200 از سرور به این معنی است که آدرس درخواستی (در متد GET) یا عملیات مورد نظر (در متد POST) به طور کامل و موفقیت آمیز توسط سرور انجام شده است، در یک ارتباط بدون نقص بین واسط کاربری (user agent) و سرور، کدهای سری 200 باید دریافت شوند.

کد 201، ساخته شده (Created)


کد HTTP 201 به معنی دریافت موفقیت آمیز درخواست و ساخته شدن یک منبع جدید در سرور است (به فرض ایجاد یک فایل یا صفحه جدید)، ارسال کد 201 تنها در صورتی صحیح است که سرور منبع جدید را ساخته باشد، در غیر اینصورت (اگر منبع هنوز ساخته نشده باشد) باید کد 202 را ارسال کند.

کد 202، موافقت شده (Accepted)


کد 202، به این معنی است که با درخواست واسط کاربری موافقت شده، اما پردازش عملیات به طور کامل صورت نگرفته است، به همین دلیل تا پایان پردازش عملیات درخواستی، ممکن است تقاضای کاربر کامل شده یا برعکس، رد شود.

کد 203، اطلاعات غیر معتبر (Non-Authoritative Information)


کد 203 که از ورژن HTTP 1/1 تعریف شده، به این معنی است که سرور درخواست واسط کاربری را به طور موفقیت آمیز پاسخ داده، ولی اطلاعات ارسالی (در پاسخ سرور) از یک منبع غیر معتبر است (به فرض کپی ازاطلاعاتی است که درستی آن تایید نمی شود)، تنظیم این کد در سرورها معمولا غیر ضروری است و می توان به جای آن کد 200 را ارسال کرد.

کد 204، پاسخ بدون محتوا (No Content)


کد 204 به معنی دریافت و پردازش صحیح درخواست واسط کاربری است، اما پاسخ سرور شامل محتوای خاصی نیست و می تواند به فرض تنها اطلاعات مربوط به، به روز رسانی منبع درخواستی باشد، معمولا دریافت این پاسخ از سرور، بدین معنی است که آدرس درخواستی هیچ گونه تغییری از آخرین درخواست تا لحظه کنونی نداشته است و فایل یا صفحه مربوطه به همان صورت قبلی نشان داده می شود.

کد 205، بازنشانی محتوا (Reset Content)


کد 205 شباهت زیادی به عملکرد کد 204 دارد، یعنی در اینجا نیز هیچ محتوایی از طرف سرور ارسال نمی شود، اما در سمت کاربر، اطلاعات فعلی بازنشانی یا Reset می گردند که این معمولا منجر به ایجاد محتوای خالی می شود، این کد مخصوصا برای پاک کردن اطلاعات فرم های وب می تواند مورد استفاده قرار گیرد.

کد 206، محتوای جزئی (Partial Content)


کد 206، برای حالت هایی که به فرض از امکاناتی نظیر ادامه دانلود (resume download) استفاده می کنیم، کاربرد دارد، با ارسال این کد توسط سرور، به قسمت خاصی از درخواست واسط کاربری به صورت جزئی پاسخ داده می شود، با این شیوه برنامه هایی که از GNU Wget یا نقل و انتقال داده از سرور پشتیبانی می کنند، قادر خواهند بود حتی پس از قطع ارتباط نیز به ادامه دریافت اطلاعات بپردازند، البته این قابلیت باید توسط سرور نیز پشتیبانی شود.

کدهای سری 300، انتقال (Redirection)


کدهای سری 300 مربوط به مواردی هستند که پاسخ به درخواست واسط کاربری از سرور، باید با انجام اعمال دیگری (در سمت کاربر) کامل شود، این عملیات معمولا توسط واسط کاربری (مثلا مرورگر) و بدون دخالت کاربر (به صورت خودکار) انجام می شود، به فرض عمل ریدایرکت یا انتقال خودکار از یک آدرس به آدرس دیگر، با ارسال کدهای سری 300 انجام می شود، نکته مهم در اینجا این مسئله است که ریدایرکت ها نباید در یک درخواست، بیش از 5 بار تکرار شوند، در غیر اینصورت در اکثر مرورگر ها، فرض بر حلقه (Loop) بی انتها شده و ارتباط قطع خواهد شد.

کد 300، انتخاب چندگانه (Multiple Choices)


کد 300 برای مواقعی است که سرور در پاسخ به درخواست واسط کاربری، چند منبع مختلف را پیشنهاد می دهد (مثلا یک فایل با فرمت های مختلف) و انتخاب یک url را به عهده مرورگر کاربر می گذارد، عمل انتخاب نیز معمولا یا به صورت خودکار انجام می شود یا اینکه سرور یکی از url ها را به عنوان پیش فرض برگزیده و همراه پاسخ خود ارسال می کند.

کد 301، انتقال همیشگی (Moved Permanently)


کد 301 یکی از مهم ترین و حساس ترین کدهای HTTP مخصوصا در علم سئو است، دریافت این کد از طرف سرور، به معنی انتقال همیشگی یک آدرس وب، به آدرسی دیگر است، از این کد مخصوصا هنگامی که در آدرس لینک های سایت، به هر دلیل تغییراتی ایجاد می شود، می توان جهت هدایت ربات های خزنده یا کاربران به لینک اصلی، استفاده کرد.

کد 302، پیدا شد (Found)


کد 302 به این معنی است که منبع درخواستی یافت شده، اما مرورگر باید موقتا به آدرس دیگری منتقل شود (Moved Temporarily)، این حالت با کد 301 متفاوت است،  در اینجا انتقال به صورت موقت انجام شده و آدرس اصلی همچنان معتبر و در دسترس خواهد بود، اما در ریدایرکت 301، منظور از انتقال، انتقال همیشگی، حذف آدرس فعلی و جایگزینی آن با آدرس جدید است.

کد 303، دیدن منبعی دیگر (See Other)


کد 303 نیز مشابه کد 302 عمل می کند، تفاوت در اینجا، تاکید روی متد GET است، در کد 303 آدرس فعلی و آدرسی که کاربر به آن منتقل می شود، باید از طریق متد GET درخواست شوند که در حالت معمول نیز به اینصورت خواهد بود.

کد 304، بدون تغییر (Not Modified)


کد 304 مربوط به مواقعی است که مرورگر همراه درخواست خود، تقاضای اطلاعات مربوط به آخرین تغییرات فایل یا منبع را نیز از سرور می نماید، اگر در فایل مورد نظر، از آخرین درخواست تا لحظه فعلی، تغییری صورت نگرفته باشد (با هر تغییر در فایل ها، تاریخ آخرین تغییر در قسمت اطلاعات فایل، ذخیره می شود)، سرور در پاسخ، کد 304 Not Modified را ارسال می کند، این کار علاوه بر اینکه باعث صرفه جویی در منابع سرور می شود، در افزایش سرعت پردازش در سمت کاربر نیز نقش بسیار موثری دارد.

کد  305، استفاده از پروکسی (Use Proxy)


کد 305، به معنی این است که سرور برای دسترسی به منبع درخواستی باید از یک پروکسی استفاده کند، پروکسی در واقع سرور میانجی بین واسط کاربری و سرور اصلی است، از این رو و به دلایل امنیتی برخی مرورگرها مانند فایرفاکس و اینترنت اکسپلورر، از این قابلیت پشتیبانی نمی کنند.

کد 306، تعویض پروکسی (Switch Proxy)


کد 306 هم مشابه کد 305 است و مربوط به درخواست تغییر پروکسی، این کد در حال حاضر کاربردی ندارد.

کد 307، انتقال موقت (Temporary Redirect)


کد 307 مربوط به مواقعی است که منبع لینک اصلی، موقتا در آدرسی دیگر قابل دسترسی است، این حالت با ریدایرکت 302 و 303 فرق دارد، در اینجا انتقال نیاز به تایید کاربر داشته و به صورت خودکار انجام نمی شود، متدهای استفاده شده نیز باید بین لینک اصلی و لینک انتقالی مشترک باشد، بقیه شرایط مشابه کدهای 302 و 303 است و واسط کاربری باید لینک فعلی را همچنان و در مراجعات بعدی به عنوان لینک اصلی مد نظر قرار دهد.

کدهای سری 400، خطای سمت کاربر (Client Error)


کدهای سری 400 مربوط به رویداد خطایی از جانب کاربر (سمت کاربر) در ارائه درخواست به سرور است، در پاسخ، سرور معمولا و به طور پیش فرض، به همراه کدهای HTTP عباراتی در توضیح خطای رخ داده ارسال می کند و دائمی یا موقتی بودن مشکل به وجود آمده را نیز تعیین خواهد کرد.

کد 400، درخواست بد (Bad Request)


کد 400 به دلیل درک نشدن شیوه نگارش (syntax) درخواست واسط کاربری از سرور رخ می دهد، در این حالت مفهوم تقاضای کاربر برای سرور روشن نیست و درخواست قابل پردازش نمی باشد، این خطا ممکن است به دلایل دیگر، از جمله نقص در انتقال داده ها (به فرض به دلیل قطع یا افت سرعت ارتباط) نیز رخ دهد.

کد 401، دسترسی نا معتبر (Unauthorized)


کد 401 به معنی دسترسی غیر مجاز است، در این حالت منبع درخواستی به طور کامل محدود نشده است، بلکه درخواست کاربر نیاز به تایید مجوزهای دسترسی (به طور معمول نام کاربری و کلمه عبور) دارد، به همین دلیل سرور در پاسخ خود یک فرم از نوع WWW-Authenticate را ارسال کرده و از کاربر می خواهد تا اعتبار خود را اثبات کند.

کد 402، نیاز به پرداخت (Payment Required)


کد 402 استفاده جاری ندارد و برای مقاصدی در آینده وضع شده است، هدف از تعریف آن مربوط به حساب های کاربری است که نیاز به پرداخت وجه دارند، البته در عمل تا کنون چنین اتفاقی رخ نداده است و از کد 402 استفاده چندانی نمی شود.

کد 403، دسترسی غیر مجاز (Forbidden)


کد 403 مربوط به مواقعی است که کاربر درخواست منبعی را از سرور دارد که دسترسی به آن برای همه کاربران محدود شده است، این حالت با کد 401 متفاوت است، در اینجا حتی با ورود نام کاربری و کلمه عبور نیز امکان دسترسی مقدور نخواهد بود، معمولا مدیران سایت ها، دسترسی مستقیم به فولدر ها و نمایش فایل ها به صورت لیست را غیر فعال می کنند، در نتیجه وقتی آدرس یک فولدر را از آن سرور درخواست می کنیم، با خطای 403 مواجه خواهیم شد.

کد 404، منبع درخواستی پیدا نشد (Not Found)


کد 404 در مواقعی رخ می دهد که واسط کاربری تقاضای منبعی (به طور مثال یک فایل یا صفحه) را از سرور دارد که در حال حاضر موجود نبوده یا حذف شده است (و یا ممکن است نام آن تغییر کرده باشد)،  البته احتمال دارد در آینده مجددا آن منبع ایجاد شده و در دسترس قرار گیرد.

کد 405، متد غیر مجاز (Method Not Allowed)


کد 405 به این معنی است که متد استفاده شده توسط کاربر برای درخواست یک منبع از سرور مجاز نمی باشد، به فرض استفاد ه از متد GET در حالتی که منبع درخواستی نیاز به ارسال منابعی از طریق متد POST دارد، یا استفاده از PUT در نوشتن یک فایل، برای فایل هایی که فقط حالت خواندنی دارند (read-only)، در این حالت، معمولا سرور در پاسخ، متد مجاز را نیز ارسال خواهد کرد.

کد 406، غیر قابل قبول (Not Acceptable)


کد 406 ممکن است به دلیل وجود کاراکترهای غیر استاندارد در درخواست ارسالی رخ دهد، برخی از سرورها به دلایل امنیتی نیز ممکن است این کد را در پاسخ ارسال کنند، به طور مثال ماژول mod_security در سرورهای Apache از پذیرفتن برخی آدرس های وب (که از نظر امنیت، سرور آنها را مشکوک تشخیص دهد) خودداری کرده و پیام  Not Acceptable دریافت خواهید کرد.

کد 407، نیاز به مجوز پروکسی (Proxy Authentication Required)


عملکرد کد 407 نیز شبیه کد 401 است، با این تفاوت که در اینجا ابتدا کاربر (واسط کاربری) باید از طریق یک پروکسی اعتبار خود را اثبات کند.

کد 408، پایان حداکثر زمان درخواست (Request Timeout)


کد 408 زمانی رخ می دهد که سرور در انتظار درخواست واسط کاربری است، اما هیچ پاسخی در زمان استاندارد دریافت نمی شود، به این صورت سرور کد 408 را ارسال می کند و واسط کاربر می تواند مجددا و در دفعات بعدی درخواست خود را ارسال کند.

کد 409، تعارض (Conflict)


کد 409 به معنی تداخل یا تعارض درخواست کاربر با عملیاتی دیگر در سرور بر روی منبع مورد نظر است، به طور مثال وقتی دو کاربر به صورت همزمان در حال ویرایش یک فایل هستند و هر دو آن را ذخیره می کنند، ممکن است این خطا رخ دهد که باید به صورت دستی آن را رفع کرد.

کد 410، محذوف (Gone)


کد 410 به معنی حذف همیشگی منبع درخواستی از سرور است، بر خلاف خطای 404، کد 410 به واسط کاربری یا موتورهای جستجو می گوید که نباید مجددا آن منبع را درخواست کنند، چرا که برای همیشه حذف شده است، البته در عمل موارد استفاده از این کد خیلی محدود است و تنظیم خطای 404 بهتر و اصولی تر است.

کد 411، عدم ارسال طول درخواست (Length Required)


کد 411 به این معنی است که سرور از پاسخ به درخواست واسط کاربری خودداری می کند، چرا که در درخواست ارسالی اندازه یا طول محتوا (Content-Length) وجود ندارد، در این حالت معمولا واسط کاربری باید در سربرگ های HTTP درخواست خود آن را اضافه کند.

کد 412، پیش شرط رد شده(Precondition Failed)


کد 412 به معنی این است که در درخواست واسط کاربری مواردی ارسال شده است (به فرض متد استفاده شده) که منبع سرور از آن طریق قابل دسترس نیست و نتیجه بررسی اولیه سرور false شده است.

کد 413، درخواست خیلی طولانی (Request Entity Too Large)


کد 413 در حالتی رخ می دهد که طول رشته درخواست ارسالی، بیش از حد توان و انتظار سرور است، لذا ارتباط توسط سرور قطع خواهد شد، اما اگر این حالت موقتی باشد، معمولا در پاسخ، سربرگ Retry-After نیز ارسال می شود و واسط کاربری مجددا و در دفعات بعدی می تواند درخواست خود را ارسال کند.

کد 414، آدرس وب خیلی طولانی (Request-URI Too Long)


این خطا به معنی بیش از حد طولانی بودن آدرس وب (URI) درخواستی است و سرور قادر به پردازش آن نیست.

کد 415، فرمت پشتیبانی نشده (Unsupported Media Type)


کد 415 به دلیل ارسال فرمتی به همراه درخواست ارسالی (به فرض آپلود یک فایل یا تصویر) است که از نظر سرور قابل پذیرش نیست و سرور فرمت دیگری را پشتیبانی می کند.

کد 416،  حد درخواستی غیر اقناع کننده (Requested Range Not Satisfiable)


این کد به دلیل ارسال درخواست قسمتی از یک منبع (به فرض بخشی از یک فایل) از سرور است، در حالی که آن قسمت وجود ندارد، به طور مثال کاربر قسمتی از یک فایل را درخواست می کند (به فرض در هنگامی که از ادامه دانلود استفاده می شود) که از حداکثر طول قسمت های آن بیشتر است.

کد 417، انتظارات رد شده(Expectation Failed)


کد 417 به معنی این است که سربرگ های HTTP ارسالی واسط کاربری با انتظارات و موارد مورد نیاز سرور همخوانی ندارد یا سربرگی ارسال نشده است.

کدهای سری 500، خطای سمت سرور (Server Error)


کدهای سری 500 به معنی نقص داخلی سرور است، با این حال سرور در مجموع سالم بوده و احتمالا به طور موقت در حال انجام به روزرسانی یا تغییراتی است و در ساعات آینده مشکل رفع خواهد شد.

کد 500، خطای داخلی سرور (Internal Server Error)


کد 500 به معنی وقوع یک خطای داخلی در سرور است و معمولا به دلیل نقص تنظیمات یا انجام به روزرسانی نرم افزاری یا سخت افزاری رخ می دهد، تنظیم این کد در مواقعی که می خواهیم در سایت، تغییراتی اعمال کنیم که باعث از دسترس خارج شدن آن می شود، می تواند مفید باشد.

کد 501، غیر مجهز یا تکمیل نشده (Not Implemented)


این خطا بدین معنی است که سرور قادر به پردازش درخواست واسط کاربری  نیست (معمولا به دلیل پشتیبانی نشدن متد ارسالی یا نقص امکانات مورد نیاز).

کد 502، خطای دروازه میانجی (Bad Gateway)


کد 502 به دلیل عدم دریافت پاسخ از سرورهای بالادست (upstream) است و سرور فعلی به عنوان یک دروازه میانجی عمل می کند، در این حالت معمولا بین سرور اصلی و واسط کاربری، دروازه های میانجی (Gateway) وجود دارند که قادر به تکمیل فرایند ارسال و دریافت پاسخ نیستند، این حالت معمولا با چند بار تلاش مجدد از سمت کاربر رفع خواهد شد.

کد 503، سرویس خارج از دسترس (Service Unavailable)


دریافت کد 503 به معنی غیر قابل دسترس بودن سرور به دلیل ترافیک زیاد (overload) یا انجام به روزرسانی است، معمولا این حالت موقتی بوده و پس از چند دقیقه یا چند ساعت رفع خواهد شد.

کد 504، پایان حداکثر زمان دروازه میانجی (Gateway Timeout)


کد 504 نیز بدین معنی است که سرور به عنوان یک دروازه میانجی (Gateway) قادر به دریافت پاسخ از سرورهای بالا دست (upstream) در حداکثر زمان مجاز نیست.

کد 505، نسخه HTTP پشتیبانی نمی شود (HTTP Version Not Supported)


کد 505 به معنی پشتیبانی نشدن نسخه HTTP پروتکلی است که واسط کاربری از آن استفاده می کند، معمولا سرور دلیل پشتیبانی نکردن از آن نسخه را نیز به همراه سربرگ های پاسخ خود ارسال می کند.
علاوه بر موارد گفته شده که طبق استاندارد RFC 2616 W3C است، کدهای دیگری مربوط به سرورهای مایکروسافت و سایر پروتکل های وب وجود دارد که به جهت کاربردی نبودن از ذکر آنها خودداری کرده ایم.

4-مفهوم پلتفرم (Platform) و فریم ورک (Framework)

پلتفرم (Platform) و فریم ورک (Framework)، دو مفهوم پرکاربرد در دنیای کامپیوتر و برنامه نویسی هستند که بارها نامشان را شنیده و راجب آنها مطالبی خوانده ایم، از آنجایی که این دو عبارت معمولا در کنار هم و یا حتی بعضا و به اشتباه به جای هم استفاده می شوند ممکن است این تصور در ذهنمان شکل گرفته باشد که این دو به یک معنی و مترادف هستند، در حالی که با بررسی دقیق تر خواهیم دید که این تصور صحیح نیست و هر کدام از واژه های مزبور بار معنایی خاصی دارند و معرف مفهوم ویژه ای هستند، برای آشنایی بیشتر در یادداشت پیش رو نگاهی خواهیم داشت به مفهوم پلتفرم و فریم ورک در برنامه نویسی و به طور خاص در برنامه نویسی وب.

پلتفرم (Platform)


پلتفرم در واقع بستری است که برنامه های نرم افزاری نوشته شده برای یک وسیله در آن قابل اجرا و استفاده است، این بستر هم شامل ملزومات سخت افزاری (مانند نوع سیستم و CPU) و هم شامل ملزومات نرم افزاری (مانند سیستم عامل) است، به طور مثال برنامه های کاربردی و بازی هایی که همه روزه با آنها سر و کار داریم بدون وجود دستگاه هایی مانند کامپیوترهای شخصی (PC)، تلفن های همراه، لپ تاپ ها، کنسول های بازی و... عملا قابل استفاده نیستند (سخت افزار) و از طرفی هر برنامه ای در یک سیستم عامل خاص (و یا حتی تحت نسخه خاص) قابل اجرا است (نرم افزار) که در مجموع به آنها پلتفرم می گوییم، مانند پلتفرم ویندوز xp 64 bit، پلتفرم ویندوز 8، پلتفرم ویندوز موبایل، پلتفرم لینوکس، پلتفرم آندروید، پلتفرم جاوا، پلتفرم PC، پلتفرم XBOX و...، یا در حوزه وب در حال حاضر برنامه های نوشته شده به زبان ASP.NET نیاز به سرور با سیستم عامل به فرض ویندوز 2008 دارند (پلتفرم ویندوز سرور 2008)، با دقت در عبارت متوجه می شویم که یک پلتفرم در واقع معرف ملزومات سخت افزاری (سرور) و همچنین ملزومات نرم افزاری (سیستم عامل ویندوز سرور 2008) مورد نیاز برای اجرای یک برنامه کاربردی (ASP.NET) است، همچنین ممکن است به نسخه ویژه یک نرم افزار نیز اشاره شده باشد (نسخه 2008)، یا در مورد PHP می توان به پلتفرم لینوکس سرور یا ویندوز سرور اشاره کرد که در واقع به معنی سروری است که روی آن سیستم عامل لینوکس یا ویندوز نصب و فعال باشد و لذا به طور خلاصه می گوییم PHP با پلتفرم لینوکس سرور یا ویندوز سرور قابل اجرا و سازگار است.

فریم ورک (Framework)


فریم ورک (نرم افزاری) در واقع مجموعه منسجم از کلاس ها و توابع (کتابخانه کلاس ها و توابع) از پیش تعریف شده است که قابلیت های بالقوه گوناگون از یک زبان برنامه نویسی را در خود دارد و بدین ترتیب کاربر نهایی را قادر می سازد که از امکانات یک زبان استفاده کند بدون اینکه درگیر مسائل پیچیده و وقت گیر آن شود، لذا همان طور که یک کلاس یا تابع با هدف جلوگیری از تکرار مکررات و افزایش سرعت کار، تعریف می شود، فریم ورک از این هم فراتر رفته و علاوه بر افزایش سرعت، مواردی مثل توسعه پذیری و ساده سازی را هم مد نظر دارد، به طور مثال همان طور که می دانیم در وب زبانی داریم به نام جاوا اسکریپت که به خودی خود توانایی های زیادی در زمینه اسکریپت نویسی تحت وب در اختیارمان قرار می دهد، اما در کنار این توانایی ها محدودیت هایی نیز وجود دارد، به طور مثال همه مرورگرها تمام دستورات جاوا اسکریپت را به یک شکل تفسیر نمی کنند و در برخی موارد هر یک ساز خود را می نوازند، از طرفی مسلما تمام کاربران، برنامه نویس حرفه ای نیستند که با موارد پیچیده سر و کار داشته باشند و به راحتی نیازهایشان را پوشش دهند، اینجا است که فریم ورک هایی مانند جی کئوری (jQuery) وارد عمل می شوند، در فریم ورکی مانند جی کئوری از قبل کلاس ها و توابعی تعریف شده که با مرورگرهای متفاوت سازگارند و با چند خط دستور ساده نیازهای گوناگونی را پوشش می دهند، کافی است فریم ورک را در صفحه خود وارد کنید تا به قابلیت هایش دسترسی داشته باشید، لذا ملاحظه می کنید که جی کئوری چیزی مجزا از جاوا اسکریپت نیست، بلکه مجموعه ای از دستورات آماده آن است که در موقعیت ها و برای مقاصد مختلف، به آسانی و بدون نوشتن کدهای اصلی قابل استفاده است، البته باید مد نظر داشت که استفاده یا عدم استفاده از فریم ورک می تواند بسته به موقعیت و نیاز، امری صحیح و ضروری یا در عین حال زائد و اشتباه تلقی شود، مخصوصا این امر در وب نمود بارزتری دارد، چرا که سرعت و سبکی از ارکان کلیدی در موفقیت سایت های وب هستند و فریم ورک ها معمولا به این مقوله آسیب می زنند.

5-پروتکل امن https و کدگذاری ssl چیست؟

همان طور که می دانیم، اطلاعاتی که به طور معمول در صفحات وب رد و بدل می شوند در بستر پروتکل HTTP یا Hyper Text Transfer Protocol انتقال می یابند، این پروتکل استانداردی تعریف شده است که با آن متن ساده یا plain text را منتقل می کنند، از طرفی این داده ها به دلیل رمزنگاری نشدن، برای افراد سوم شخص قابل خواندن هستند، مثلا اگر پسورد خود را در بستر این پروتکل به سروری منتقل کنید، ممکن است از طریق سرویس دهنده اینترنت، قابل روئیت باشد (با استفاده از برنامه هایی تحت عنوان sniffer)، لذا http از لحاظ امنیتی برای کارهایی که به اطلاعات حساس از جمله حسابهای بانکی و رمزهای مشتریان مربوط می شود اصلا مناسب نیست، از این رو بانک ها و فروشگاههای اینترنتی و در کل سایتهایی که امنیت کاربران برایشان اهمیت زیادی دارد، از پروتکلی دیگر به نام HTTPS یا Hyper Text Transfer Protocol Secure بدین منظور استفاده می کنند.

پروتکل HTTPS چیست و چه فرقی با HTTP دارد؟


HTTPS پروتکلی است که در بستر آن امکان رمزنگاری (encrypt) اطلاعات فراهم می شود، به لحاظ تخصصی در HTTP پورت 80 مورد استفاده قرار می گیرد، در حالی که در HTTPS این پورت 443 است؛ از طرفی همانطور که گفتیم در HTTP داده ها به صورت متن ساده یا plain text هستند اما در HTTPS رمزنگاری داده ها به وسیله SSL انجام می شود.

ssl به چه معناست؟


ssl مخففی است از سرواژه های Secure Sockets Layer و در اصطلاح به سیستم امن و رمزی انتقال داده اطلاق می شود، ssl را ابتدا شرکت Netscape به منظور نقل و انتقال امن و رمزی اطلاعات ایجاد نمود و اکنون تقریبا تمام مرورگرهای استاندارد از جمله فایر فاکس، اینترنت اکسپلورر، اپرا، گوگل کروم و سافاری آن را پشتیبانی می کنند؛ همچنین در این رابطه شرکتهایی وجود دارند که گواهی ssl ارائه می کنند.

شیوه رمزنگاری اطلاعات در ssl به چه صورت است؟


در یک بیان ساده، پس از برقراری اتصال امن، ssl اطلاعات را به وسیله دو کلید رمزنگاری می کند، کلید عمومی برای اشخاص سوم شخص قابل خواندن است اما کلید دوم تنها توسط ارسال کننده و دریافت کننده داده، قابل استفاده است.

چگونه از استفاده کردن یک سایت از پروتکل امن اطمینان حاصل کنیم؟


چند فاکتور در تعیین معتبر بودن گواهی یک سایت نقش دارند، اول از همه کلید کوچکی است که در مرورگرهای مختلف با کمی اختلاف در مکان و شکل، نشان داده می شود، برخی از مرورگرها در نسخه های جدید خود پس از برقراری یک اتصال امن، نوار آدرس را به رنگ سبز نیز نشان می دهند؛ فاکتور دیگر وجود عبارت https در ابتدای آدرس آن سایت است.

چرا در برخی از سایت ها، مرورگر تقاضای تایید اعتبار می کند؟


بعضا ممکن است با صفحاتی روبرو شده باشید که مرورگر نسبت به منقضی شدن اعتبار گواهی ارتباط امن آن، به شما هشدار دهد، این اتفاق به چند دلیل ممکن است رخ دهد، یکی اینکه گواهی آن سایت واقعا به پایان رسیده و تمدید نشده باشد، دوم اینکه تاریخ سیستم شما از زمان حقیقی، عقب تر یا حتی جلوتر باشد، دلیل سوم هم می تواند به مسائل فنی صفحه و ترکیب اشتباه داده های عادی با داده های رمزنگاری شده مربوط باشد که این عامل به مسائل فنی سایت ارتباط دارد.

چگونه برای سایت خود گواهی ssl تهیه کنیم؟


برای داشتن یک ارتباط امن در بستر HTTPS برای سایت خود، نیاز به گواهی معتبر ssl دارید، این گواهی از طریق نمایندگی ها و سرویس دهنده های هاست نیز قابل خریداری است، علاوه بر این به سروری با قابلیت پشتیانی از ssl و یک ip اختصاصی احتیاج خواهید داشت.
و در پایان

چند نکته:


- اگرچه HTTPS و رمزنگاری ssl امن و قابل اطمینان است، اما به دلیل وجود محدودیتهایی، معمولا سرعت انتقال اطلاعات از این طریق نسبت به شیوه معمول یعنی HTTP پائین تر است، لذا برای افزایش کارایی، بهتر است تنها در صفحاتی از این پروتکل استفاده کنید که اطلاعات حساسی در آنها رد و بدل می شود.
- در استفاده از سرور HTTPS دقت داشته باشید که مخصوصا در مورد تصاویری که بارگذاری می شوند، آنها را با محتوایی که از قسمت HTTPS فراخوانی می شوند در یک صفحه قرار ندهید (یا لااقل به صورت آدرس کامل http://www قرار ندهید)، چرا که موجب می شود تا مرورگر کاربران برای هر تصویر، سوالی مبنی بر معتبر نبودن اتصال و ادامه دادن یا ندادن درخواست، از آنها داشته باشد و واضح است که این موضوع موجب نارضایتی کاربران خواهد شد.

6-حمله DDOS چیست و چگونه از آن جلوگیری کنیم؟

امروزه مقوله امنیت و شاخه های آن در فضای وب به امری حیاتی و همه گیر تبدیل شده است، مخصوصا برای صاحبان سایت ها و مهم تر از آن برای مدیران سرورهای وب، چرا که آسیب پذیری و ضعف امنیتی به عنوان عاملی بازدارنده در مسیر پیشرفت و توسعه اهدافشان در وب است، بعضا شاهد هستیم که افراد مختلف با انگیزه های متفاوت اقدام به هک و ایجاد اختلال در سایت ها و سرورها و در نتیجه باعث از دسترس خارج شدن و یا در حالتی پیشرفته تر از کنترل خارج شدن آنها می شوند، این افراد برای رسیدن به مقاصدشان از شیوه های متفاوتی استفاده می کنند که البته بسته به میزان هوشمندی مدیران سرور و رعایت نکات امنیتی در سیستم های مدیریت محتوا، خیلی از این روش ها به راحتی قابل پیشگیری است؛ اما آنچه در این مطلب قصد داریم به آن بپردازیم، آشنا کردن شما با نوعی از ایجاد اختلال در وب موسوم به حمله های DDOS یا distributed denial of service attack است که بیشترین شیوع را دارد.

حمله DDOS چیست؟


حمله ddos یا dos مخفف (denial of service attack) به زبان ساده یعنی سرازیر کردن تقاضاهای زیاد به یک سرور (کامپیوتر قربانی یا هدف) و استفاده بیش از حد از منابع (پردازنده، پایگاه داده، پهنای باند، حافظه و...) به طوری که سرویس دهی عادی آن به کاربرانش دچار اختلال شده یا از دسترس خارج شود (به دلیل حجم بالای پردازش یا به اصطلاح overload شدن عملیات های سرور)، در این نوع حمله ها در یک لحظه یا در طی یک زمان به صورت مداوم از طریق کامپیوترهای مختلف که ممکن است خواسته یا حتی ناخواسته مورد استفاده قرار گرفته باشند، به یک سرور (با آی پی مشخص) درخواست دریافت اطلاعات می شود و به دلیل محدود بودن قدرت پردازش سرور به کاربران در وضعیت عادی (یعنی قدرت سرور را به تعداد کاربرانش در حالت عادی در نظر گرفته اند نه حالت غیر طبیعی)، مثل حالاتی که کامپیوترهای رومیزی دچار کندی یا توقف کامل می شوند، دچار وقفه در سرویس دهی یا حتی down شدن آن می شود.

چه کسانی حمله ddos را انجام می دهند؟


اصولا حمله های ddos با انگیزه های متفاوت ممکن است توسط یک یا چند نفر و یا حتی گروهی از افراد صورت گیرد، اما آماری که تا به امروز به ثبت رسیده، حکایت از انگیزه های بیشتر فردی یا چند نفره داشته است، به طور مثال ممکن است افرادی برای از سر راه برداشتن ناجوانمردانه رقیبشان در وب، دست به این نوع اعمال بزنند تا مخاطبان آن سایت یا سرور دچار دلسردی شده و از آن فاصله بگیرند یا برعکس عده ای هکر، خیرخواهانه به سایتی ضد اجتماعی یا به فرض جنگ طلب حمله ddos کنند، لذا گستره افراد و انگیزه ها، بسته به نوع مورد، متفاوت خواهد بود، اما آنچه مسلم است معمولا انسان ها پشت این حملات هستند یا ترکیبی از اندیشه انسان و به کارگیری سیستم، سرور و ابزارهای خاص (DDOS tools) دست به دست هم می دهند تا یک حمله ddos شکل بگیرد.

علائم حمله ddos چیست؟


خوشبختانه یکی از موارد مثبت این نوع حملات این است که به سرعت می توان به نحوه عملکرد سرویس مشکوک شد و جلوی اختلال بیشتر را گرفت، پس از اینکه سروری مورد حمله ddos قرار می گیرد ممکن است با توجه به اهداف و شیوه به کار رفته یک قسمت از منابع یا همه ی قسمت های آن دچار اختلال شود، در زیر لیستی از این علائم را ذکر می کنیم.
- کندی در پاسخگویی به درخواست ها
سروری که مود حمله قرار گرفته باشد، معمولا خیلی کند و با وقفه به درخواست بارگذاری صفحات پاسخ می دهد، البته این نشانه همیشه دلیل حمله ddos نیست، چرا که این اتفاق به طور طبیعی نیز برای سرورها و سایتهای با بازدید بالا ممکن است رخ دهد یا کنترل این امر بستگی زیادی به قدرت سخت افزاری سرور و تنظیمات آن دارد.
- عدم اتصال به پایگاه داده
گاهی ممکن است صفحات استاتیک که نیازی به اتصال پایگاه داده ندارند به راحتی بارگذاری شوند، ولی اتصال به پایگاه داده برای صفحات داینامیک برقرار نشود، در چنین مواقعی معمولا پیام تکمیل ظرفیت اتصال به پایگاه داده یا too many connection  ظاهر خواهد شد، بهترین کار در چنین حالتی این است که با تنظیم یک دستور هِدر 500 HTTP، به ربات های جستجوگر بگوییم که سایت ما فعلا دچار مشکلی است و بعدا مراجعه نمائید!، چرا که در غیر اینصورت با وجود down بودن دیتابیس سرور، ربات ها با دریافت وضعیت HTTP 200، صفحه خالی را ایندکس می کنند که این حالت اصلا مناسب نیست، در php این کار را با دستورات header می توان انجام داد.

header('HTTP/1.0 500 Internal Server Error');

- مصرف بیش از حد منابع سرور
یکی دیگر از نشانه های حمله ddos می تواند مصرف بیش از حد و غیر طبیعی منابع سرور مثل حافظه و یا پهنای باند در یک بازه زمانی کوتاه باشد.
- افزایش انفجاری درخواست ها
یکی دیگر از نشانه های حمله ddos، وجود شمار زیادی درخواست http به سرور است که با مشاهده فایل log و قسمت آمار، می توان به این موضوع پی برد.
- اختلالات در سرویس های جانبی نظیر ایمیل
گاهی مواقع حملات ddos سرویس های جانبی یک سرور نظیر سرویس ایمیل را هدف می گیرند، در این مواقع ارسال و دریافت ایمیل ممکن است به کندی صورت گیرد یا دچار وقفه شود، البته همانطور که گفتیم، هر وقفه و اختلالی به معنی حمله ddos نیست، تنها به عنوان یک نشانه می توان آن را محسوب کرد.

در حمله ddos از چه روش هایی استفاده می شود؟


چند روش به عنوان شایع ترین ها در این نوع حملات استفاده می شود، که در زیر به آنها به طور مختصر و جهت آشنایی اشاره می کنیم:
- روش Ping Flood یا طوفان درخواست ها
در این شیوه مهاجم سعی می کند با ارسال درخواست ها (یا بسته های ping) به سمت کامپیوتر هدف (قربانی)، و با تکرار این عمل، کل منابع سرور را اشغال کند تا در نهایت آن را به طور کامل از کار بیندازد، در این شیوه معمولا از کامپیوترهای موجود در یک شبکه یا از سرورهایی به طور همزمان درخواست به سمت سرور قربانی ارسال می شود تا در نهایت موجب از کار افتادن آن شود.
- روش Smurf attack یا استفاده از نقص تنظیمات
یک Smurf attack نوع خاصی از طوفان درخواستها به یک سرور است که طی آن به دلیل وجود ضعف در تنظیمات سرویس، اجازه ارسال بسته هایی از اطلاعات به تمام کامپیوتر های موجود در یک شبکه در عوض ارسال آن به یک کامپیوتر خاص از طریق آدرس Broadcast آنها است، آدرس Broadcast می تواند به عنوان مثال آی پی اشتراکی سایت های موجود در یک سرور باشد؛ در این حالت اگر تنظیمات سرور به درستی انجام نشده باشد، ارسال یک درخواست به این آی پی، موجب تقسیم شدن آن بین تمام زیر شاخه ها و در نتیجه overload شدن سرور می شود.
- حملات موسوم به SYN یا SYN flood
روش اخیر نیز در عمل مشابه با موارد گفته شده است، با این تفاوت که در اینجا مهاجم با ارسال درخواستهایی از نوع بسته های TCP/SYN در پشت چهره ای عادی و تایید شده به عنوان یک کاربر معمولی، از سرور تقاضای اتصال می کند که پس از ارسال پاسخ درخواست، هیچ جوابی به پاسخ سرور داده نمی شود تا اتصال نیمه باز همچنان برقرار باشد (سرور در انتظار پاسخ مهاجم مدتی صبر می کند)، در این بین با افزایش این اتصالات نیمه باز، منابع سرور اشغال شده و نهایتا موجب بروز اختلال و از کار افتادن آن می شود.
- روش Teardrop یا Teardrop attacks
در این شیوه رشته ای از آی پی های ناقص به هم متصل شده و شبیه به هم را به سرور ارسال می کنند که اگر تنظیمات قسمت TCP/IP fragmentation re-assembly سرور دچار نقص در تشخیص آنها باشد، موجب بروز مشکل اضافه بار یا overload در سرور خواهد شد.

حمله ddos چقدر طول می کشد؟


یکی از سوال های همیشگی در چنین موقعیت هایی این است که یک حمله ddos چقدر طول می کشد و ظرف چه مدتی به پایان می رسد، پاسخ این سوال نیز می تواند یک جمله باشد: تا زمانی که به پایان رسد! این موضع بستگی به میزان سماجت مهاجم و ضعف مدافع دارد، یعنی اگر مهاجم بر ادامه حملات خود اصرار داشته باشد و در مقابل مدافع که همان مدیران سرور هستند نتوانند از عهده کنترل اوضاع بر آیند، ممکن است حمله ddos ساعت ها یا روزها به طول انجامد، در خوش بینانه ترین حالت ظرف چند دقیقه و در بدترین حالت چندین و چند روز و به دفعات ممکن است طول بکشد.

برای جلوگیری از حمله ddos چه کارهایی را انجام دهیم؟


واقعیت این است که کنترل حمله های ddos پس از وقوع کمی دشوارتر از پیشگیری از آن است، امروزه در سایتها و انجمن های زیادی به افراد آموزش شیوه های هک و ایجاد حمله های ddos داده می شود که این امر با افزایش شمار کاربران اینترنت (که می توانند میانجی و قربانی بالقوه برای حمله به سرورها باشند) رو به گسترش است، البته آسیب پذیری در این رابطه، بیشتر به امنیت سرور برمی گردد تا به امنیت سایت شما، در مورد سرور می توان پس از اطمینان از حمله ddos، آی پی هایی را که بیشترین تقاضا را به سرور داشته اند و ناشناس هستند، توسط فایروال ها بلاک و مسدود کرد، یا با نصب بسته های امنیتی خاص و به روزرسانی و ارتقا سخت افزاری و نرم افزاری، آسیب پذیری سرور را کاهش داد، آگاهی از روند عادی سرور نیز می تواند کمک بزرگی در این خصوص محسوب شود، چرا که اگر مدیر سرور نسبت به عادی یا غیر عادی بودن ترافیک آن، آشنایی داشته باشد، به سرعت می تواند پی به وجود این نوع حمله ها ببرد و در جهت رفع آن برآید، به عنوان یک کاربر در سرویس های میزبانی وب، ب21:36:4421:36:44هترین کار این است که به محض مشکوک بودن به چنین حمله هایی، موضوع را به هاست خود اطلاع دهید تا در کوتاه ترین زمان جلوی آن گرفته شود.

7-دلایل به هم ریختن قالب وبلاگ ها و سایت ها

بارها شده مدیران وبلاگ ها از به هم ریختن قالب وبلاگشان ناراحت یا کلافه شده اند و شاید برای شما هم پیش آمده باشد که  قالب وبلاگ یا سایتتان از لحاظ ظاهری دچار مشکل شود و به اصطلاح به هم بریزد، در این مطلب قصد داریم به طور مختصر به دلایل اصلی این مشکل اشاره کنیم؛ اینکه چه چیز باعث به هم ریختن  قالب یک وبلاگ یا سایت می شود به دلیل گستردگی موضوع در چارچوب یک مطلب نمی گنجد ولی دانستن و رعایت چند نکته ساده می تواند تا حدود زیادی از این امر جلوگیری کند و یا لااقل باعث شود که اشتباهات، کم تر تکرار شوند.

نوع طراحی قالب


یکی از این دلایل بر می گردد به نوع طراحی قالب وبلاگ یا سایت که ممکن است در مراحل ایجاد آن دقت کافی نشده باشد و این موضوع مربوط به طراح قالب است؛ به طور مثال طراح قالب ممکن است بلاک ها و لایه ها را به نحوی تنظیم کرده باشد که موقعیتشان شکننده باشد و با کوچکترین تغییری نظم آنها از بین برود و به صورت نامرتب درآیند.

عدم سازگاری قالب با مرورگرها


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

درج محتوای غیر استاندارد


علت دیگری که می تواند سبب این موضوع شود نوع مطالب و محتوایی است که مدیر وبلاگ یا سایت در آن درج می کند، به طور مثال درج تصاویری که پهنای پیکسلی آنها بیش از صفحه طراحی شده برای نمایش مطلب است (به فرض درج یک تصویر 600 در 800 پیکسلی در یک لایه 500 در 600 پیکسلی!) ممکن است موجب شود تا کل قالب ناقص نشان داده شود و یا به فرض  نویسنده وبلاگ یک عبارت طولانی را بدون فاصله در جعبه های کناری قرار دهد (به فرض weeeeeeeeeeeeeb!) که این موضوع موجب می شود تا مرورگر نتواند کلمات را بشکند و در خط بعدی نشان دهد و این خود باعث ایجاد مشکل می شود.

کدنویسی غیر استاندارد


استفاده از کدهای غیر استاندارد نیز از دلایل دیگر این امر است، به طور مثال استفاده از برخی کدهای جاوا اسکریپت که دقت کافی در ایجاد آنها نشده است؛ استفاده صرف از فلش که باعث می شود برخی از کاربران نتوانند آن را مشاهده کنند یا به کار بردن بیش از حد توابع و کتابخانه های جی کئوری (jquery) و جاوا اسکریپت (javascript) که بعضا با هم ناسازگاری نیز ممکن است داشته باشند و...، همچنین این موارد موجب می شوند کاربرانی که این قابلیت ها در مرورگر آنها غیر فعال است یا پشتیبانی نمی شود، نتوانند از تمام امکانات به درستی استفاده کنند، بهتر است بیشتر از موارد و امکاناتی بهره بگیریم که اکثر کاربران قادر به مشاهده و استفاده از آن باشند.

دستکاری قالب وبلاگ و سایت


دستکاری شدن قالب و پاک شدن برخی تگ ها نیز از دلایل شایع است، هر چند ممکن است تجربه و آشنایی کافی با تگ ها و اصول برنامه نویسی وب را داشته باشید، ولی با این حال بهتر است قبل از اعمال هر نوع تغییری در قالب، ابتدا از آن پشتیبان تهیه کنید که در مواقع لزوم بتوان وضعیت را به حالت سابق تغییر داد؛ با رعایت این نکات ساده می توان از بروز مشکل به هم ریختن قالب وبلاگ و سایت، تا حدود زیادی پیشگیری کرد.

8-چگونه سایت یا وبلاگ را برای موتورهای جستجو بهینه سازی کنیم؟

احتمالا گوشه کنار وب به تبلیغاتی برخورده اید که محتوای آنها بالا بردن پیج رنک، افزایش رتبه و بازدید و یا افزایش ترافیک سایت شما است؛ برخی نیز به خاطر این خدماتشان هزینه های بعضا کلانی مطالبه می کنند، اما آیا واقعا برای بهینه کردن سایت یا وبلاگمان الزاما باید به آنها رجوع کنیم؟ اصلا این سایتها خود از چه روش هایی استفاده می کنند؟ آیا این روش ها مثل اسرار شعبده بازان پنهانی است و جایی درز نکرده؟! واقعیت این است که علمی به نام بهینه سازی سایت (seo) عملا چیزی جزء رعایت و دانستن مجموعه ای از اصول وب نیست، اصولی که اکثر وب نویسان کم تر آنها را رعایت می کنند، چرا که جزئیات بسیار، کار را بعضا کمی پیچیده می کند؛ در این مطلب خواهیم دید که رعایت چند نکته کلیدی می تواند تا میزان زیادی ما را از دیگران بی نیاز کند و  خواهیم گفت که رعایت هر کدام از نکات تا چه میزان مهم و ضروری است.

-

برای ایجاد محتوای سایت خود وقت و حوصله صرف کنید.


نکته کلیدی و اساسی هر سایت یا وبلاگی وجود محتوای خوب و کاربرپسند است، گام اول شما در رسیدن به هدفتان انتشار مطالب کاربردی و مفید است؛ سعی کنید تیتر و محتوای مطالبتان را مطابق نیاز کاربران انتخاب کنید و همیشه مختصر و مفید بنویسید.
-

رعایت استاندارد کدنویسی و معتبرسازی کدها.


اگر قالب سایت یا وبلاگتان را خودتان طراحی می کنید حتما از ابزار های سنجش اعتبار (مثل سایت w3.org) استفاده کنید، البته خیلی از سایت ها هستند که با وجود داشتن رتبه ای خوب از استاندارد کدنویسی برخوردار نیستند، اما به یاد داشته باشیم که در دنیای رقابت وب، بین دو پایگاه یکسان از هر لحاظ آن سایتی بالاتر است که استانداردها را رعایت کرده باشد.
-

محتوای خود را به درستی ایجاد و منتشر نمائید.


برای تصاویر حتما از متن جایگزین تصویر (alt) و اندازه طول و عرض استفاده کنید، از تغییر اندازه پیش فرض تصاویر خودداری کنید؛ برای عناصر موجود در فرم ها در حد امکان برچسب مرتبط مهیا کنید؛ از سرتیترها به حد نیاز استفاده نمایید، سرتیترها تگ های h1 تا h6 هستند.
-

از فیدها و نقشه سایت xml استاندارد، برای صفحه خود استفاده کنید.


فید (خوراک) آر اس اس یکی از بهترین شیوه ها برای معرفی لینک های موجود در سایتتان به موتورهای جستجو است، علاوه بر این قابلیت اطلاع از به روزرسانی مطالب برای کاربرانتان فراهم می شود؛ از خوراک وب که بگذریم نقشه xml سایت نقشی عمده در علم بهینه سازی دارد، امروزه بیشتر موتورهای جستجوگر معروف از جمله گوگل (google)، بینگ (bing)، یاهو (yahoo) و... جزء پروتکلی به نام نقشه سایت یا Sitemap هستند و از شیوه ای استاندارد پیروی می کنند، با فراهم کردن یک نقشه از لینک های سایتتان اطمینان حاصل کنید که تمام آنها به درستی به موتورهای جستجو معرفی شده اند.
-

تکلیفتان را با لینک های داینامیک و استاتیک مشخص کنید!


بعضا شاهد این موضوع هستیم که توصیه می شود از لینک های استاتیک به جای آدرس های داینامیک (آدرس هایی که در آن علامت ؟ وجود دارد) استفاده کنیم، چرا که از لحاظ موتورهای جستجو بهینه تر هستند و قابلیتهای بیشتری در اختیار بازدیدکنندگان قرار می دهند، به همین خاطر خیلی از مدیران سایتها و برخی از سیستم های مدیریت محتوا، از تکنیک هایی مانند دوباره نویسی (rewrite) آدرس ها در htaccess استفاده می کنند؛ اما واقعیت این است که فرق چندانی بین یک لینک داینامیک با پارامترهای کوتاه و کلیدواژه های خوب با یک لینک استاتیک وجود ندارد، چرا که امروزه دیگر الگوریتم های ربات های جستجوگر به حدی پیشرفت کرده است که به راحتی این نوع لینک ها را ایندکس می کنند، فقط مهم این است که لینک دارای پارامترهای هرچه کم تر (جهت کوتاه تر شدن لینک) و کلیدواژه های مناسب باشد؛ از طرفی سایت گوگل در یک مقاله رسمی توصیه می کند، در صورتی که مهارت لازم در مدیریت و تبدیل لینک های استاتیک را ندارید، از دوباره نویسی لینک های داینامیک خودداری کنید، چرا که ربات جستجوگر این سرویس، این نوع لینک ها را نیز به خوبی شناسایی و از اطلاعات موجود در آنها برای ایندکس بهتر استفاده می کند؛ از طرفی دوباره نویسی  (rewrite) لینک ها بعضا مشکلاتی ایجاد می کند، چرا که ایجاد و مدیریت صحیح لینک ها مخصوصا برای کاربران کم تر حرفه ای، کمی سخت تر می شود؛ در کل لینک های داینامیک استاندارد و یکتا (بدون ایجاد محتوای تکراری یکسان یا Duplicate Content) و با کلمات کلیدی مناسب و کوتاه در مقایسه با لینک های استاتیک مشابه، فرق چندانی در افزایش یا کاهش رتبه سایت شما ندارد، با این حال اگر مهارت لازم در کار با سرور و فایل htaccess را دارید، تبدیل لینک های داینامیک به استاتیک می تواند با رعایت سایر نکات بهینه سازی (seo)، انجام شود.
-

لینک به سایتتان را جدی بگیرید!


سایت ها و صفحاتی که کاربران به آنها از سایت یا وبلاگشان به دلایل مختلف (و از همه مهمتر به خاطر مفید بودنشان) لینک می دهند، از جمله موفق ترین ها در عرصه وب هستند؛ موتورهای جستجو نیز برای این موضوع اهمیت زیادی قائل هستند و اعتبار و ارزش بیشتری به سایت یا وبلاگ ارجاع داده شده می دهند؛ پس جذب لینک برای سایتتان را جدی بگیرید.
-

برای وارد کردن کدهای جاوا اسکریپت و استایل های css از ایمپورت خارجی استفاده کنید.


فایلهای css و جاوا اسکریپت (javascript) را به صورت فایل خارجی ایمپورت کنید تا علاوه بر افزایش سرعت بارگذاری صفحه، محتوای سایتتان بیشتر در معرض دید ربات های جستجوگر باشد.
-

استفاده از بلاک های div به جای table ها در طراحی قالب و صفحات.


در طراحی صفحات و قالب ها توصیه می شود از بلاک های div به جای جداول استفاده کنید، البته این موضوع و اهمیت آن خود جای بحث دارد، اما به هرصورت استفاده و تسلط بر لایه های div مدتی است که تبدیل به استاندارد طراحی وب شده است و از جداول تنها برای نمایش مطالب خاصی استفاده می شود (که صرفا باید در جدول نشان داده شوند) مانند آمار و ارقام.

9-رتبه بندی الکسا (Alexa) چیست و چقدر اهمیت دارد؟!

شاید گوشه کنار وب بارها عنوان رتبه الکسا (Alexa) را دیده و مطالبی در این خصوص خوانده باشید؛ سایتها و سرویس های خاصی نیز در این رابطه در گستره وب شکل گرفته اند که در مجموع تحت عنوان بهینه سازی و افزایش رتبه سایت SEO یا (Search Engine Optimization) فعالیت می کنند، اینکه الکسا چیست، چگونه آمار بازدیدهای یک سایت را به دست می آورد و رتبه بندی آن تا چه میزان اهمیت دارد، مطلبی است که در این یادداشت به آن خواهیم پرداخت تا نهایتا به نتیجه ای منطقی دست پیدا کنیم.

الکسا (Alexa) چیست؟


الکسا (Alexa) عنوان سرویسی است وابسته به سایت amazon.com که در آدرس Alexa.com ارائه می شود، هدف از این سرویس رتبه بندی پایگاه های اینترنتی از نظر تعداد بازدیدکننده (ترافیک بازدیدها) می باشد که با در نظر گرفتن یک سری معیار های محاسباتی و آماری، نهایتا سایت های مختلف را به لحاظ میزان دیده شدن صفحات آنها، رتبه بندی می کند.

اهمیت و دقت رتبه بندی الکسا (Alexa)


اما چرا رتبه الکسا برای مدیران سایت ها اهمیت زیادی دارد و آیا اساسا این رتبه بندی دقیق است؟ واقعیت این است که آمار این سرویس لزوما دقیق و کاملا براساس واقعیت نیست و تا حدودی مبتنی بر محاسباتی فرضی و احتمالی است، چرا که منبع اصلی جمع آوری اطلاعات الکسا و در واقع پشتوانه آن، نوار ابزار یا تولباری (Alexa Toolbar) است که در مرورگر بازدیدکنندگان در سرتاسر دنیا نصب می شود، به فرض ممکن است اکثر کاربران پایگاهی بدون نصب تولبار از آن دیدن کنند و در مقابل سایتی دیگر به دلیل نوع فعالیتش بازدیدکننده های خاصی داشته باشد که تولبار الکسا را، اکثر آنها نصب کرده باشند (معمولا وبسایت هایی که بازدیدکننده هایشان از تجربه کافی در فعالیت های وب برخوردارند، رتبه الکسای بهتری نسبت به سایت های دیگر ولی با بازدید مشابه دارند)؛ اما با وجود همه ی این تفاسیر نباید سایت الکسا و رتبه آن را آنقدرها هم دست کم گرفت! خواسته یا ناخواسته، رتبه الکسا جای خود را بین کاربران باز کرده و اهمیتی نسبی در عرصه وب و مخصوصا تجارت الکترونیک پیدا کرده است؛ به طور مثال تبلیغ دهنده گان بیشتر تمایل دارند که با سایت های مرتبط با اهدافشان با توجه به رتبه الکسای آنها همکاری کنند، از طرفی اطلاعات سایت الکسا بعضا در تجزیه و تحلیل بهتر و هدف گذاری مخاطبان و نیازهایشان، می تواند تاثیر مثبتی داشته باشد، یا در مقایسه چند سایت مشابه از لحاظ محبوبیت، تعیین کننده باشد؛ متاسفانه  برخی با توصل به روش های متقلبانه نیز اقدام به افزایش رتبه سایت خود می کنند، به فرض به تعدادی از دوستان خود می گویند که با تولبار الکسا به طور مرتب از آدرس آنها دیدن کنند و واضح است که این نوع کارها جزء هدر دادن وقت و به اصطلاح گول زدن خود، ارزش دیگری ندارد و معمولا این گونه افراد پس از مدتی از این کار خسته شده و مخاطبان واقعی خود را نیز از دست می دهند.

مدت زمان لازم برای کسب رتبه الکسا (Alexa)


اگر به تازگی سایت خود را راه اندازی کرده اید، برای اینکه در قسمت نمایش اطلاعات سایت الکسا جایی داشته باشید، پس از عضویت در آن و ثبت آدرس خود، معمولا باید مدتی بین 1 تا 3 ماه از ثبت سایت شما بگذرد و از طرفی هرچه بازدیدکننده سایتتان بیشتر باشد، شانس شما بیشتر خواهد بود؛ لذا می توان گفت بهترین کار برای کسب رتبه بالاتر (البته در سیستم الکسا هرچه عدد شما کم تر باشد یعنی رتبه شما بالاتر است!) تلاش در جهت انتشار مطالب بهتر و مفیدتر و اهمیت قائل شدن برای مخاطبان است؛ به این ترتیب هر چه که فعالیت شما در وب مستمر و با کیفیت باشد، سایت الکسا نیز اهمیت بیشتری برایتان قائل شده و نوع تجزیه تحلیل و آمارهای ارائه شده آن نیز به مرور زمان متفاوت خواهد بود.

10-پیج رنک چیست و چگونه می توان آن را افزایش داد؟

این واقعیت که با گسترش پیچیدگی های وب، موفقیت یک سایت یا وبلاگ نیز در آن به همان مقدار پیچیده شده است، امری است که نمی توان آن را انکار کرد، مجموعه عواملی که آن را این روزها (seo (Search Engine Optimization می نامند، خواسته یا ناخواسته در جلب مخاطبان و در نتیجه موفقیت بیشتر سهم عمده ای دارند، یکی از مهم ترین این فاکتورها پیج رنک (PageRank) نام دارد که عموما آن را به پیج رنک گوگل می شناسند، در صورتی که لااقل بر روی کاغذ این دو از هم متمایزند هرچند در عمل فرق چندانی ندارند؛ یادداشت پیش رو نگاهی خواهد داشت به این موضوع و اهمیت آن در پیشرفت و موفقیت یک سایت یا وبلاگ.

پیج رنک چیست؟


در بیانی ساده پیج رنک (PageRank) سیستمی است که با الگروتیم های پیچیده میزان نفوذ و قدرت یک صفحه وب را بر اساس معیارهایی که عمدتا بر میزان لینک های ورودی تکیه دارد، محاسبه می کند و امتیازی برای آن صفحه در نظر می گیرد (این امتیاز در موتور جستجوی گوگل بین 0 تا 10 است)، هر چند این سیستم ابتدا توسط گوگل پایه گذاری و به کار گرفته شد، اما امروزه بیشتر موتورهای جستجوی معروف کم و بیش از آن پشتیبانی می کنند.

نحوه محاسبه پیج رنک چگونه است؟


محاسبه پیج رنک بر اساس ارزش لینک های ورودی از سایت یا وبلاگ مبداء انجام می شود، به فرض اگر صد صفحه با پیج رنک 0 شما را لینک کنند، شاید ارزش آن معادل دریافت یک لینک از یک صفحه با پیج رنک 2 باشد، لذا میزان صفحاتی که لینک می دهند چندان مهم نیست (هر چند هرچه قدر این مقدار بیشتر باشد در نهایت بهتر است)، بلکه پیج رنک فعلی آنها است که باعث افزایش رتبه شما می شود، به یاد داشته باشیم، صفحاتی که به تعداد زیادی لینک خروجی می دهند، به همان نسبت ارزش لینک هایشان کاهش می یابد، به فرض اگر سایتی پیج رنک 6 داشته باشد اما به تعداد زیادی صفحه دیگر لینک خروجی دهد، ارزش آن برابر با سایت مشابه نیست که مثلا تنها به چند لینک بسنده کرده است (ارزش لینک های سایت اخیر خیلی بیشتر است).

چگونه از پیج رنک سایت یا وبلاگ خود مطلع شویم؟


بهترین توصیه ای که می شود در این خصوص کرد، استفاده از نوار ابزار (تولبار) گوگل است که به صورت پلاگین هایی بر روی مرورگرهای مختلف قابل نصب است، مثلا مرورگر فایرفاکس یا گوگل کروم امکانات خوبی در این خصوص در اختیارتان می گذارند؛ استفاده از ابزارهای وبلاگی نیز در صورتی که در بارگذاری صفحه خللی ایجاد نکنند و لینک های غیر استاندارد (پنهانی و تبلیغاتی) در خود نداشته باشند، می تواند انتخاب دوم باشد.

پیج رنک چقدر اهمیت دارد؟


اینکه پیج رنک چقدر اهمیت دارد، در مجموع بحث پیچیده ای است، مدتها پیش که این تکنولوژی توسط گوگل به کار گرفته شد، اهمیت آن خیلی بیشتر از زمان حاضر بود، به طوری که این عامل باعث به راه افتادن بازار سیاه بین صاحبان رنک بالا و مشتاقان کسب رنک بالاتر بود، اما به مرور و در نبرد بین گوگل و این انحصارگرایان وب، الگروتیم های محاسبه اهمیت پیج رنک رو به سوی هوشمندتر شدن پیش رفت و امروزه صرف دریافت یک لینک از یک سایت معتبر به خودی خود عامل تعیین کننده نیست، بلکه یکی از فاکتورهای موفقیت محسوب می شود، از طرفی صفحاتی که به طور غیر عادی افزایش لینک دریافتی دارند (که معمولا ناشی از خریداری شدن لینکها یا استفاده از سیستم های لینک دهنده است) ممکن است از طرف گوگل شناسایی و از لیست جستجو حذف گردنند، لذا به نظر می رسد تلاش در جهت ایجاد محتوایی مناسب و در پیش گرفتن روش های جوانمردانه به جای حقه های بی ارزش، گزینه مناسب تری است. 

چگونه می توانیم پیج رنک خود را افزایش دهیم؟


هر چند پاسخ این سوال را به طور پراکنده در مطالب بالا گفته ایم، اما برای یادآوری باید بگوییم که افزایش پیج رنک در درجه اول به کسب اعتبار برای سایت یا وبلاگتان بستگی دارد که این موضوع خود برمی گردد به خدمات و محتوایی که در اختیار بازدیدکننده گان قرار می گیرد، علاوه بر این رعایت استانداردهای وب از جمله در کدنویسی، استفاده از کلمات کلیدی مناسب و متاتگ ها نیز فاکتوری تعیین کننده است، در مجموع می توان در دو جمله خلاصه گفت: سخت کوشی در تهیه محتوای خوب و تلاش در جهت افزایش دانش وب.

11-نحوه استفاده از فایل robots.txt در سایت

یر تمام لینک های داینامیک را برای ربات غیر قابل دسترس می کند:

User-agent: *
Disallow: /*?

همچنین می توان برای ساب دایرکتوری ها (دایرکتوری های زیر مجموعه) نیز این قابلیت را ایجاد کرد و از این نظر هیچ محدودیتی نیست:

User-agent: *
Disallow: /articles/*?

- برای مشخص کردن دقیق انتهای یک الگو، از علامت $ استفاده می شود، به فرض اگر قصد ما مسدود کردن تمام فایل های با پسوند png برای ربات باشد، خواهیم نوشت:

User-agent: * 
Disallow: /*.png$

به این ترتیب، تمام فایل هایی که به پسوند png ختم شده باشند، برای ربات مسدود می شوند.

استفاده ترکیبی از قوانین در فایل robots.txt


تنظیمات فایل robots.txt به موارد گفته شده محدود نمی شود، شما می توانید برای یک واسط کاربری، چندین و چند آدرس یا دایرکتوری مجاز یا غیر مجاز تعریف کنید، یا با قوانین پیچیده، دستورات پیچیده تری ایجاد نمائید، به فرض در برخی سایت ها ممکن است مقادیر id سشن (session یا نشست) به عنوان بخشی از آدرس صفحه به صورت رندوم در لینک ها قرار داده شود (این موضوع یک اشکال در سئو محسوب شده زیرا موجب بروز مطالب تکراری با لینک های متفاوت می گردد) و در مقابل برخی آدرس ها نیز علامت ? را به طور طبیعی داشته باشند، در اینگونه موارد اگر بخواهیم به ربات بگوییم که به عبارات بعد از علامت ? در لینک های دارای سشن id توجه نکند، ولی لینک هایی را که به علامت ? (بدون وجود کاراکتری بعد از علامت ?) ختم می شوند، ایندکس کند، در یک فایل robots.txt خواهیم نوشت:

User-agent: *
Allow: /*?$
Disallow: /*?

به این ترتیب قانون اول اجازه ایندکس تمام آدرس هایی را که نهایتا به علامت ? ختم می شوند می دهد (علامت $ نشان دهنده پایان یک الگو است)، اما قانون دوم باعث نادیده گرفتن سشن id در لینک های داینامیک سایت می شود (در واقع وقتی از علامت $ در انتهای الگو استفاده نمی شود، یعنی هر عبارتی بعد از علامت ? بیاید، شامل آن الگو می شود).  
یا به فرض اگر بخواهیم چند لینک مختلف را در یک دستور مسدود کنیم، خواهیم نوشت:

User-agent: *
Disallow: /articles/22.html
Disallow: /articles/23.html
Disallow: /articles/?post=159&title=آموزش-برنامه-نویسی-وب

افزودن نقشه سایت به فایل robots.txt


علاوه بر مجاز و مسدود کردن لینک ها، دایرکتوری ها و فایل ها، فایل robots.txt یک قابلیت دیگر نیز دارد، از طریق این فایل می توانید نقشه xml سایت خود را به تمام ربات های خزنده معرفی کنید، برای انجام این کار کافی است با یک فاصله، آدرس کامل نقشه سایت خود را وارد نمائید، به فرض:

User-agent: *
Disallow: /articles/22.html
Disallow: /articles/23.html
Disallow: /articles/?post=159&title=آموزش-برنامه-نویسی-وب

Sitemap: http://webgoo.ir/sitemap.xml

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


در پایان این مطلب، بد نیست اشاره ای نیز داشته باشیم به سایر روش های مسدود سازی لینک ها و صفحات، بر روی ربات های جستجوگر، علاوه بر استفاده از فایل robots.txt جهت کنترل رفتار خزنده های با اصل و نسب وب، دو روش دیگر نیز برای این کار وجود دارد، روش اول استفاده از متاتگ noindex است که در قسمت head صفحه قرار می گیرد، به فرض:

<meta name="robots" content="noindex" />

یا

<meta name="googlebot" content="noindex" />

روش دوم نیز ارسال یک سربرگ HTTP برای ربات ها در هنگامی که صفحه را درخواست می کنند است، انجام این کار در php با استفاده از توابع header و به شکل زیر صورت می گیرد:

header("X-Robots-Tag: noindex", true);

یا

header("X-Robots-Tag: noindex, nofollow", true);

12-چرا برخی سایت ها و وبلاگ ها رتبه الکسای بهتری دارند؟

حتما تا به حال عنوان رتبه الکسا (Alexa) را بارها شنیده و به احتمال زیاد مطالبی در این خصوص خوانده اید، همان طور که می دانیم الکسا یک شرکت وابسته به سایت آمازون (Amazon.com) است که در زمینه جمع آوری و تحلیل اطلاعات آماری وبگاه ها و وبلاگ های مختلف فعالیت می کند که خواسته یا ناخواسته بین مدیران، کاربران و مخصوصا تبلیغ دهندگان شبکه جهانی وب از جایگاه به خصوصی برخوردار است، به همین دلیل در کنار فاکتوری دیگر به نام پیج رنک یا رتبه در گوگل (google pagerank)، فاکتور رتبه الکسا نیز به دغدغه های مدیران وبگاه ها و وبلاگ ها افزوده شده، هر چند که این آمار صد در صد مبتنی بر واقعیت نیست، با این حال نمی توان اهمیت آن را نادیده گرفت، به هر صورت بنا به درخواست برخی کاربران و طرح این سوال که چرا برخی وبلاگ و سایت ها رتبه بالاتری در الکسا دارند، قصد داریم در این مطلب از زوایای جدیدتری به این موضوع نگاه کنیم که شاید کم تر به آنها اشاره شده باشد.

منبع آمار الکسا (Alexa)


پیش از هر چیز باید بدانیم که منبع گردآوری اطلاعات آماری سایت الکسا چیست و رتبه بندی سایت ها و وبلاگ ها چگونه توسط این سرویس انجام می شود؟
پاسخ این است که بیشترین تکیه الگوریتم الکسا بر روی اطلاعاتی است که از تولبار (Toolbar) یا همان نوار ابزار خود که در مرورگر کاربران و توسط آنها نصب شده است بدست می آید، وقتی این تولبار در مرورگر نصب و فعال باشد، هر صفحه ای را که مشاهده کنید، اطلاعات آماری همزمان که به شما نشان داده می شود، برای سایت الکسا فرستاده شده و مورد پردازش قرار می گیرد، لذا فاکتور اصلی برای الکسا تعداد بازدید ها توسط کاربرانی است که این تولبار را نصب کرده اند، فاکتور بعدی که در رتبه بندی الکسا نقش دارد، میزان زمان صرف شده در هر صفحه و در کنار آن تعداد صفحاتی است که توسط کاربران بازدید می شود، در واقع این دو نکته از نظر الکسا سیگنال هایی برای سنجش میزان محبوبیت و کیفیت مطالب یک وبسایت یا وبلاگ است؛ اما باید توجه داشت که منبع اطلاعات الکسا تنها به تولبار آن ختم نمی شود.

ابزارک نمایش بازدید الکسا (Alexa Traffic Widget)


در کنار تولبار الکسا، یک منبع دیگر نیز توسط این سایت برای سنجش رتبه مورد استفاده قرار می گیرد که همان ابزارک یا Widget نام دارد، Widget به طور خلاصه به برنامه های کوچک قابل اجرا در صفحات وب گفته می شوند که با وجود سادگی و ظرافت، می توانند پردازش هایی را مدیریت یا اطلاعات آماری خاصی را جمع آوری کنند، این ابزارک توسط الکسا در آدرس زیر ارائه می شود:
http://www.alexa.com/siteowners/widgets
مزیتی که این روش در مقایسه با تولبار دارد این است که در اینجا نیازی نیست الزاما کاربر در مرورگر خود نوار ابزار الکسا را نصب کرده باشد، بلکه با بارگذاری صفحه، این ابزار به طور خودکار اجرا خواهد شد، لذا ملاحظه می کنید که با استفاده از آن بسیاری از بازدیدهایی که تا پیش از این خبری از آنها به الکسا نمی رسید، زیر ذره بین آن قرار می گیرند که این موجب افزایش رتبه سایت یا وبلاگ خواهد شد، البته باید توجه نمود که ظاهرا اطلاعات این ابزارک ها در درجه اهمیت کمتری از تولبار الکسا قرار دارد، به این معنی که الگوریتم الکسا به دلایلی (شاید به این دلیل که به نحوی عدالت و تعادل بین سایت ها و وبلاگ هایی که از ابزارک استفاده می کنند و آنهایی که این کار را نمی کنند، رعایت و برقرار شود و تحلیل ها چندان غیر واقعی به نظر نرسند)، اهمیت خیلی کمتری به آنها می دهد (طبق آخرین مقایسه ها چیزی در حدود حداکثر 25 درصد ممکن است افزایش رتبه مشاهده شود).
اما عیبی که این روش و به طور کلی قرار دادن ابزارهای سوم شخص (third party) در صفحات وب دارد، احتمال از دسترس خارج شدن یا بارگذاری طولانی مدت آنها است که در این صورت اگر کدها را به فرض در ابتدای قالب سایت یا وبلاگ خود کپی کرده باشید، به احتمال زیاد شاهد بارگذاری خیلی کند صفحه خود خواهید بود، همان طور که گفتیم این مشکل ممکن است برای سایر ابزار های مشابه نیز اتفاق بیفتد، البته برای حل آن روش هایی پیشنهاد شده است که شاید ساده ترین و موثر ترین آن، قرار دادن کدها در انتهای قالب باشد، به این صورت کدهای اصلی و محتوای صفحه ابتدا بارگذاری شده و سپس نوبت به ابزار ها می رسد.

تاثیر تصاویر و فایل های جاوا اسکریپت در رتبه الکسا


تا اینجا صحبت از این بود که بازدیدکنندگان وارد سایت یا وبلاگ ما شده و آمار آنها بر رتبه الکسا تاثیر می گذارد، اما یک فرضیه دیگر را نیز می توان در این مورد مطرح کرد و آن وجود تصاویر یا فایل های جاوا اسکریپت مربوط به سایت ما در صفحات سایر سایت ها و وبلاگ ها است، به طور مثال سایت هایی که ابزارهای آنلاین ارائه داده و معمولا کدی در اختیار سایر کاربران قرار می دهند، عمدتا رتبه گوگل و الکسای بهتری دارند، علت اصلی این موضوع صرف نظر از کیفیت و کمیت خدمات آنها که مسلما در مجموع نقشی کلیدی دارد، می تواند (در مورد پیج رنک گوگل) وجود لینک به سایت مبدا در ابزار ها و (در مورد رتبه الکسا) به احتمال زیاد محاسبه شدن فایل هایی که از سرور سایت مبدا فراخوانی می شود، در رتبه سایت باشد، همین اتفاق ممکن است در مورد تصاویری که از سرور یک سایت در صفحات دیگر وب بارگذاری می شود رخ دهد، یعنی با بارگذاری هر فایل از سرور یک سایت و نمایش آن در صفحه ای دیگر، الکسا تاثیر مثبتی برای سایت مبدا قائل می شود که این در نهایت موجب بهبود رتبه کلی آن خواهد بود، در حالی که ممکن است بازدید مستقیم و واقعی از صفحات آن سایت به این اندازه صورت نگیرد.

تاثیر موضوع و نوع فعالیت سایت یا وبلاگ در رتبه الکسا


یک نکته دیگر که در تحلیل آمارهای الکسا باید به آن دقت شود، نوع فعالیت و موضوع سایت یا وبلاگ است، تجربه ثابت کرده، سایت ها و وبلاگ هایی که اکثر مخاطبان آنها از تجربه ای نسبی در وب برخوردارند، معمولا رتبه الکسای بهتری دارند که البته دلیل آن روشن است، چرا که تولبار الکسا برای بسیاری از کاربران عادی پدیده ای ناشناخته و بعضا نصب آن غیر ضروری است، لذا بیشتر، کاربرانی این تولبار را در مرورگر خود نصب شده دارند که با آن آشنا باشند، این کاربران نیز معمولا در وب به دنبال مطالب مورد علاقه خود هستند و اگر فعالیت و حوزه کاری یک سایت در ارتباط بیشتر با نوع نیازهای آنها باشد، مسلما رتبه الکسای بهتری نیز خواهد داشت، این در حالی است که ممکن است برخی سایت ها با بازدید واقعی بیشتر، رتبه کم تری در الکسا داشته باشند، البته این مطلب بیشتر در مورد سایت هایی با بازدید و شهرت متوسط می تواند صدق کند و سایت هایی که شناخته شده هستند معمولا توسط اکثر افراد دیده می شوند.

رتبه وبلاگ ها و ساب دامین ها در الکسا


آخرین نکته ای که در این مطلب قصد پرداختن به آن را داریم، این مورد است که الکسا برای وبلاگ های برخی سرویس دهنده ها و ساب دامین ها (دامنه های زیر مجموعه)، به جای نمایش رتبه اصلی آن صفحه، رتبه صفحه اول را نمایش می دهد، به فرض اگر سایت سرویس دهنده با آدرس yoursite.com دارای رتبه فرضی 123 باشد، ممکن است برای آدرس زیر دامنه ای یا ساب دامین blog.yoursite.com نیز رتبه 123 نمایش داده شود، البته این موضوع در مورد سایت ها چندان مسئله ی مهمی به نظر نمی رسد، اما برای وبلاگ ها باعث می شود تا امکان نمایش رتبه حقیقی از آنها گرفته شده و بعضا برخی از کاربران با شگفتی مواجه شوند!

13-مشکلات رایج در کدنویسی معتبر و رفع آنها

همان طور که می دانیم، یکی از موارد در بهینه سازی صفحات وب برای موتورهای جستجو (SEO یا Search Engine Optimization) که رعایت آن از اهمیت بالایی نیز برخوردار است، معتبر بودن کدها از نظر سازگاری و تطابق با استانداردهای تعریف شده کنسرسیوم جهانی وب (W3C) است، مفهوم این عبارت این است که صفحات وب باید طبق اصول خاصی کدنویسی شوند و لذا ما به عنوان ایجادگر صفحه، مجاز به استفاده از تگ ها و شیوه های غیر استاندارد نیستیم، اگرچه ممکن است برخی صفحات هرچند با وجود خطاهای فراوان در کدنویسی همچنان قابل استفاده و به ظاهر بی نقص باشند، اما به یاد داشته باشیم وب امروز عرصه رقابت است و سایت ها و وبلاگ هایی می توانند موفق شوند که فاکتورهای مثبت بیشتری در اختیار داشته باشند، به هر صورت این مطلب را اختصاص داده ایم به یادآوری برخی اشتباهات رایج در کدنویسی و راه حل رفع آنها.

سرویس اعتبار سنجی w3c


قبل از پرداختن به اشتباهات رایج کدنویسی و راه حل آنها، باید با سرویس اعتبار سنجی w3c آشنا باشید، این سرویس توسط کنسرسیوم جهانی وب راه اندازی شده و کدنویسی صفحات را در زمینه زبان های HTML، CSS، XHTML و ... سنجش می کند، البته معمولا برای هر دسته از زبان ها یک آدرس مجزا در نظر گرفته شده است که در زیر ملاحظه می کنید:
اعتبار سنجی کدهای HTML، XHTML و...:
validator.w3.org
اعتبار سنجی کدهای CSS:
jigsaw.w3.org/css-validator
با مراجعه به سرویس های بالا و درج آدرس صفحات وب یا فایل های css می توانید از معتبر بودن کدها یا اشکالات موجود در آنها مطلع شوید، البته همان طور که اشاره شد، هیچ الزامی برای کدنویسی معتبر نیست و خیلی از صفحات وب پر از خطاهای مختلف هستند که ممکن است تاثیر چندانی هم بر ظاهر آنها نداشته باشد (هر چند بر رتبه آنها در seo کم و بیش تاثیر منفی خواهد داشت)، از طرفی اهمیت معتبر بودن کدهای مربوط به استایل css از معتبر بودن کدهای html کم تر است، چرا که کدهای html مستقیما توسط ربات موتورهای جستجو مورد تحلیل قرار می گیرد و نقش اصلی در پردازش یک سایت یا وبلاگ دارد، اما استایل css عمدتا توسط ربات ها بررسی نمی شود (هر چند در مورد ربات گوگل ممکن است این طور نباشد).
نکته 1: با استفاده از قابلیت نصب Add-ons (پلاگین های اضافه شونده) در مرورگر هایی مانند فایرفاکس، گوگل کروم و... می توانید بدون مراجعه مستقیم به سرویس های فوق، از خدمات آنها استفاده کنید.
نکته 2: قبل از هر نوع تغییر در کدنویسی سایت یا قالب وبلاگ، فراموش نکنید که یک پشتیبان از آن تهیه نمائید تا در صورت بروز مشکلات ناخواسته بتوانید وضع را به حالت سابق برگردانید.

کدنویسی بر اساس نسخه html


اولین نکته ای که برای نوشتن کدهای معتبر در وب باید به آن توجه کنیم، نسخه html است که قصد استفاده از آن را داریم، توضیح اینکه زبان html در نسخه های متفاوتی ارائه شده  که هر کدام تفاوت هایی با هم دارند، به طور مثال نسخه XHTML 1.0 Transitional با HTML 4.01 Transitional متفاوت است، برای کسب اطلاعات بیشتر می توانید مطلب زیر را مطالعه کنید:
چرا و چگونه از DOCTYPE در HTML استفاده کنیم؟

از قلم انداختن تگ های اصلی


یکی از خطاهایی که ممکن است سرویس اعتبارسنجی w3c از کد نویسی ما داشته باشد، خطای از قلم انداختن تگ های اصلی است که با عبارت نمونه زیر مشخص می شود:
end tag for "head" which is not finished
این خطا معمولا به دلیل از قلم انداختن تگ های اصلی مانند title است که باید برای صفحه خود یک عنوان با استفاده از تگ title در بین تگ های head تعریف کنید.

استفاده نکردن از ویژگی xmlns برای html


یکی دیگر از خطاهای رایج در کدنویسی html، خطای Missing xmlns attribute است:
Missing xmlns attribute for element html. The value should be: http://www.w3.org/1999/xhtml
این خطا معمولا به دلیل تعریف نکردن آدرس استاندارد xhtml در ابتدای تگ html است (زمانی که از نسخه xhtml استفاده می کنید باید در تگ html به مرجع xhtml آن آدرس دهید)، برای رفع آن باید تگ ابتدایی html به صورت زیر باشد:
<html xmlns="http://www.w3.org/1999/xhtml">

استفاده نادرست از تگ های یکتا


در نسخه های مختلف html، تگ های یکتایی مانند img، br، meta و... با علامت / در انتهای تگ یا بدون آن بسته می شوند، به طور مثال در xhtml تگ br باید به صورت زیر بسته شود.
<br />
اما همین تگ در html نسخه 5 در حالت استاندارد به صورت زیر بسته می شود (هر چند ممکن است حالت های دیگر نیز مجاز باشند).
<br>
حال اگر این تگ ها را در نسخه های متفاوت به صورت غیر استاندارد استفاده کنید خطای نمونه زیر را دریافت خواهید کرد:
end tag for "br" omitted, but OMITTAG NO was specified
برای رفع این مورد باید به دنبال تگ مشخص شده در خطا باشید و انتهای آن را با علامت / یا بدون آن ببندید.

استفاده نادرست از تگ های جفتی


اکثر تگ های html به صورت جفتی تعریف می شوند، به طور مثال وقتی از بلاک div استفاده می کنید باید به صورت نمونه زیر کد آن را تعریف کنید.
<div>
</div>
اگر به فرض تگ دوم را با علامت / نبندید یا اینکه یکی از تگ ها را به طور کامل از قلم بیندازید، خطای نمونه زیر را دریافت خواهید کرد:
end tag for "div" omitted, but OMITTAG NO was specified

استفاده از خاصیت های منسوخ شده


در ابتدای پیدایش html و در نسخه های اولیه برخی از خاصیت های مربوط به جلوه های ظاهری برای تگ ها به صورت خطی قابل استفاده بود، به طور مثال می توانستیم از خاصیت align به طور مستقیم برای چینش عناصر استفاده کنیم، اما به تدریج در نسخه های جدیدتر ویژگی های ظاهری به استایل css منتقل شد و دیگر تعریف آنها به صورت خطی مجاز نیست (البته اگر از DOCTYPE Strict استفاده کنید)، به همین دلیل به جای align باید از text-align استفاده کنیم.
نمونه خطای دریافتی:
there is no attribute "align"
مشابه همین خطا ممکن است در مورد خاصیت border برای تگ img در html نسخه 5 رخ دهد.
The border attribute is obsolete. Consider specifying img { border: 0; } in CSS instead.

استفاده از جاوا اسکریپت به صورت خطی


اگر در صفحات خود به صورت خطی (inline) از جاوا اسکریپت استفاده کنید، این کار ممکن است باعث نمایش خطاهای ناخواسته شود، برای جلوگیری از بروز این نوع خطاها درابتدای کدهای خود از تگ CDATA استفاده نمائید، به طور مثال:
<script type="text/javascript">
//<![CDATA[
کد جاوا اسکریپت را در این قسمت قرار دهید
//]]>
</script>

استفاده نکردن از خاصیت های الزامی


زمانی که از یک تصویر در صفحه خود استفاده می کنید، باید در کنار تگ img، خاصیت alt (متن جانشین تصویر) را نیز تعریف کنید، در غیر این صورت ممکن است با خطای زیر مواجه شوید:
An img element must have an alt attribute, except under certain conditions. For details, consult guidance on providing text alternatives for images.
همین مورد ممکن است برای کدهای جاوا اسکریپت نیز اتفاق بیفتد، به طور مثال استفاده از type برای وارد کردن کدهای جاوا اسکریپت الزامی است و لذا مثال زیر اشتباه است:
<script>
</script>
نمونه خطای دریافتی:
required attribute "type" not specified
کد صحیح:
<script type="text/javascript">
</script>

استفاده از کاراکتر & در آدرس های وب


اگر در آدرس های وب (URL) موجود در صفحات سایت یا وبلاگ شما از کاراکتر & استفاده شود، خطای زیر را دریافت خواهید کرد:
& did not start a character reference. (& probably should have been escaped as &amp;.)
برای رفع این خطا باید به جای علامت & از کاراکتر استاندارد ;amp& در تمام لینک ها استفاده کنید، به طور مثال لینک زیر صحیح نیست:
<a href="http://www.yoursite.com/?q=1&t=title">link</a>
نمونه صحیح:
<a href="http://www.yoursite.com/?q=1&amp;t=title">link</a>

استفاده از تگ embed


اگر چه تگ embed معمولا در صفحات وب برای نمایش کلیپ های فلش، پخش ویدئو، صدا و... مورد استفاده قرار می گیرد، اما جالب است که سرویس اعتبارسنجی w3c آن را معتبر نمی داند و نمونه خطای زیر را ممکن است نمایش دهد:
element "embed" undefined
برای رفع این گونه مشکلات یک راه حل (که به نظر تنها راه حل کاربردی نیز می رسد) استفاده از document.write در جاوا اسکریپت است، بدین صورت کدهایی که باید مستقیم در صفحه قرار گیرند با واسطه جاوا اسکریپت درج می شوند، به طور مثال از کد زیر می توان برای درج کلیپ فلش استفاده کرد بدون اینکه کدنویسی نامعتبر شود:
<script type="text/javascript">
/* <![CDATA[ */
document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" id="flashmovie" width="120" height="90">');
document.write('<param name="flashmovie" value="flashmovie.swf" />');
document.write('<param name="bgcolor" value="#666666" />');
document.write('<param name="quality" value="high" />');
document.write('<param name="seamlesstabbing" value="false" />');
document.write('<param name="allowscriptaccess" value="samedomain" />');
document.write('<embed type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" name="flashmovie" width="120" height="90" src="flashmovie.swf" bgcolor="#666666" quality="high" seamlesstabbing="false" allowscriptaccess="samedomain">');
document.write('</embed>');
document.write('</object>');
/* ]]> */
</script>

تعریف چندباره id


هر عنصر در صفحات وب مجاز به استفاده از یک id منحصر به فرد است و لذا اگر چند عنصر با یک id در کدنویسی خود داشته باشیم با خطای زیر مواجه خواهیم شد:
ID "div-id" already defined
برای رفع این خطا باید در کد خود به دنبال id های مشترک باشید و برای هر عنصر از یک id منحصر به فرد استفاده کنید.

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


استفاده از تگ ها در html باید طبق استاندارد خاصی انجام شود، به طور مثال درون تگ p که مربوط به پاراگراف است، مجاز به استفاده از تگ div نیستیم.
نمونه خطای دریافتی:
document type does not allow element "div" here; missing one of "object", "applet", "map", "iframe", "button", "ins", "del" start-tag
لذا نمونه زیر اشتباه است:
<p><div></div></p>
نمونه صحیح:
<div><p></p></div>
به این حالت در اصطلاح تگ های آشیانه ای یا nested می گویند که باید اصول و استاندارد آنها در کدنویسی رعایت شود.
در پایان این مطلب یادآور می شویم که خطاهای اعتبارسنجی محدود به موارد گفته شده نیستند، از طرفی اگر سایت یا وبلاگ فعلی شما دارای خطاهای زیادی است ولی با این حال در موتورهای جستجو رتبه خوبی دارد، شاید اصلاح و استانداردسازی کدها چندان هم ضروری نباشد، چرا که خیلی از موارد خطای w3c از دید موتورهای جستجو مشکل جدی تلقی نمی شوند و تنها تعداد خاصی از آنها تاثیر مستقیم بر رتبه سایت یا وبلاگ شما دارند.

14-حل مشکل مطالب تکراری (duplicate content) در سایت

امروزه علمی به نام سئو (seo یا Search Engine Optimization) نقشی کلیدی در موفقیت یک سایت یا وبلاگ بازی می کند، البته همانطور که در مطالب گذشته گفته ایم، این علم چیزی نیست جزء رعایت یک سری موارد در جهت ایجاد محتوای استاندارد در وب و آگاهی از نحوه عملکرد موتورهای جستجوگر به عنوان رکن تعیین کننده در افزایش بازدیدها و از طرفی ایجاد محتوای مفید و کاربرپسند برای یاری رساندن به مخاطبان و در نتیجه جلب محبوبیت بیشتر برای سایت یا وبلاگ شما نزد آنان، اما آنچه که سبب می شود سئو را علمی پیچیده در وب لقب دهند بیشتر به خاطر گستردگی فاکتورهایی است که در آن نقش بازی می کنند، یعنی این علم خود از زیرشاخه ها و نکاتی فرعی تشکیل شده که رعایت آنها به صورت یک مجموعه در کنار هم می تواند نقش موثری در موفقیت شما در عرصه وب داشته باشد؛ یکی از این فاکتورها داشتن محتوای یکتا و پرهیز از ایجاد عمدی یا سهوی صفحات و مطالب تکراری (duplicate content) است که در این مطلب به تفصیل علت پیدایش و روش های حل این مشکل را بررسی می کنیم.

نکته: این مطلب یک مقاله سطح متوسط به بالا است، لذا ممکن است درک برخی مسائل برای کاربران کم تر حرفه ای، چندان راحت نباشد، توصیه می کنیم اگر شما نیز در چنین وضعیتی قرار دارید، لطفا صرفا به عنوان کسب اطلاعات بیشتر آن را مطالعه کنید و از دستکاری سایت یا وبلاگ خود جدا خودداری نمائید!

مطالب تکراری یا duplicate content چیست؟


مطالب تکراری یا duplicate content انواع و تعریف مختلف دارند، گاهی کل محتوای یک صفحه با صفحه همسان دیگری مشابه است و گاهی نیز تشابه به تگ هایی مثل title و description محدود می شود، نوع سوم هم می تواند عدم تشابه در تگ های title و description و تشابه در محتوای آن صفحات باشد؛ مثلا فرض کنید به عنوان یک کاربر در موتور جستجوی گوگل به دنبال عبارتی می گردید، آنگاه در لیست نتایج، با چند صفحه از سایتی روبرو می شوید که علی رغم متفاوت بودن لینک مطلب، محتوای یکسان و مشابه ای در آنها وجود دارد، این صفحات را در اصطلاح، صفحاتی با محتوا و مطالب مشابه و تکراری یا duplicate content می نامند که از نظر سئو یک عیب محسوب می شود.

چرا نباید در سایت یا وبلاگ خود مطالب تکراری داشته باشیم؟


اینکه چرا نباید مطالب تکراری در سایت یا وبلاگ خود داشته باشیم، بیشتر بر می گردد به طبع موتورهای جستجو و از جمله گوگل، ربات های جستجوگر این سرویس ها همیشه در پی یافتن مطالبی یکتا از آدرس های (url) سایت یا وبلاگ شما هستند تا نتایجی بهتر به کاربران خود نشان دهند، وقتی چندین صفحه تکراری با محتوای یکسان را معرفی کنیم، به نوعی موجب سردرگمی آنها شده ایم، البته نهایتا آنها یک صفحه را به عنوان مرجع تشخیص می دهند و آن را بر می گزینند، اما تکرار این کار ممکن است موجب شناسایی سایت یا وبلاگ شما به عنوان پایگاهی فریب دهنده و حقه باز شود که این در نهایت موجب حذف آدرس و اطلاعات شما از لیست جستجو و پایگاه داده آنها است، در عوض داشتن مطالبی یکتا بدون تکرار یا با حداقل تکرار و یا استفاده از روش هایی که در ادامه خواهیم گفت، سبب جلب اعتماد بیشتر موتور های جستجو به سایت یا وبلاگ شما و بالا رفتن رنک مطالب شما در لیست نتایج آنها است.
علت دیگری که می توان برای پرهیز از ایجاد خواسته یا ناخواسته مطالب تکراری عنوان کرد، پراکنده شدن و در نتیجه کاهش رنک مطالب سایت یا وبلاگ است، چرا که در حالت معمولی با بازدیدها و لینک هایی که به یک مطلب تعلق می گیرد، رنک آن نیز به همان نسبت افزایش می یابد و واضح است که اگر این رنک را بین چند صفحه دیگر تقسیم کنیم، در نهایت رنک تمام آنها کاهش خواهد یافت؛ از طرفی دیگر مطالب تکراری موجب صرف وقت و پهنای باند بیشتر در مرور صفحات توسط ربات ها و کسب نتیجه کمتر به دلیل همسان بودن محتوا است که این خود شانس ایندکس صفحاتی بیشتر در بازه زمانی کوتاه تر را از سایت یا وبلاگ شما خواهد گرفت.

علت ایجاد مطالب تکراری یا duplicate content چیست؟


مشکل محتوای تکراری به دلایل زیادی ممکن است ایجاد گردد، در زیر به پاره ای از این دلایل و روش حل آن اشاره می کنیم.
- نقص عملکرد سیستم مدیریت محتوا در تولید لینک های یکتا:
برخی سیستم های مدیریت سایت یا وبلاگ، برای یک مطلب به دلایل مختلف ممکن است لینک های مجزا و متفاوت تولید کنند، مثلا ممکن است صفحه اصلی سایت به هر دو صورت زیر در دسترس باشد.
http://yoursite.com
http://yoursite.com/?page=1
شاید از نظر کاربران سایت این مشکل چندانی به نظر نرسد، اما از دید ربات های جستجوگر، این دو آدرس، دو صفحه متفاوت با محتوایی یکسان محسوب می شوند، لذا حتی المقدور سعی کنید لینک های اضافه را اصلاح نمائید؛ در ضمن استفاده از rel canonical نیز می تواند تا حدود زیادی رنک مطالب اصلی را حفظ کند، البته نحوه استفاده از این تگ جای بحث بیشتر دارد ولی همین قدر بدانیم که باید آن را در صفحاتی که مشابه با صفحه اصلی هستند، با تنظیم لینک مطلب اصلی، در قسمت هِدر (بین تگ های head) به صورت زیر قرار دهیم.
<link rel="canonical" href="http://www.yoursite.com/mainlink.html" />
بعضا شاهد هستیم که برخی در تمام صفحات خود این تگ را استفاده می کنند که ظاهرا با فلسفه وجودی آن منافات دارد، چرا که rel canonical باید در صفحات همسان با صفحه اصلی، برای مشخص نمودن محتوای مرجع به کار برده شود نه اینکه در تمام صفحات، آن را قرار دهیم (البته ضرر این کار اثبات نشده است اما مسلما به این صورت سودی هم نخواهد داشت).
- ایجاد محتوای یکسان در آدرس های گوناگون:
اگر به طور همزمان مطالب خود را در بیش از یک سایت یا وبلاگ درج کنید، این کار موجب ایجاد مطالب تکراری همسان یا duplicate content می شود، چرا که ربات های جستجوگر با یافتن این مطالب، آنها را با هم مقایسه می کنند و تنها آن مطلبی را که درست تشخیص دهند، ایندکس می کنند، لذا از کپی بی مورد مطالب در سایت ها و وبلاگ های گوناگون خودداری کنید.
- در دسترس بودن سایت با www و بدون آن
اگر وبسایت شما با درج عبارت www در نوار آدرس و در عین حال بدون درج آن نیز در دسترس کاربران قرار می گیرد، به طور قریب به یقین با مشکل مطالب تکراری روبرو خواهید شد، چرا که از دید موتورهای جستجو این دو آدرس، دو صفحه مجزا تلقی شده و به طور جداگانه پردازش می شوند، البته برخی از آنها نظیر گوگل تا حدودی قادر به تشخیص آدرس پیش فرض هستند، اما بهتر است یک آدرس را برگزینید و حالت دیگر را با ارسال کد HTTP 301، به اصطلاح برای همیشه ریدایرکت کنید (HTTP/1.1 301 Moved Permanently)، انجام این کار در php با تنظیم مقادیر هِدر به صورت زیر امکان پذیر است.
header('HTTP/1.1 301 Moved Permanently'); 
header('Location: http://www.yoursite.com');
die();
کد بالا با ارسال هِدر 301 به ربات های جستجو خواهد گفت که لینک مورد نظر آنان برای همیشه به آدرس جدیدی منتقل شده است که در قسمت Location آن را تنظیم کرده ایم، این نوع ریدایرکت با حالت معمولی که از متاتگ refresh استفاده می کنیم فرق دارد، این روش مورد تایید و توصیه موتورهای جستجو و کاربرپسند است (چرا که به دلیل سرعت کار، در واقع کاربر معمولا متوجه عمل انتقال به لینک جدید نمی شود)، اما روش ریدایرکت با متاتگ refresh جایگزینی برای موارد اضطراری است که به کدهای سرور خود دسترسی نداریم و توصیه نمی شود، یادآور می شویم تا هنگامی که در برنامه نویسی php یا asp تسلط لازم را پیدا نکرده اید اقدام به دستکاری کدهای خود نکنید، چون یک تغییر اشتباه ممکن است موجب بروز مشکلات بدتر از وجود مطالب تکراری شود!
- وجود دو یا چند دامنه برای یک سایت یا وبلاگ
مانند موقعیت قبل، اگر سایت یا وبلاگ شما با دو یا چند آدرس در وب قابل دسترسی باشد، تاثیر منفی مستقیم بر عملکرد آن خواهد داشت، مگر اینکه تمام دامین های فرعی را با ریدایرکت HTTP 301، به دامین اصلی هدایت کنید، مثلا اگر آدرس سایت شما هم به صورت:
http://yoursite.com
و هم به صورت:
http://yoursite.ir
در دسترس است، باید یک دامنه را انتخاب کنید و آدرس دیگر را به دامنه اصلی انتقال دهید.
- قابل دسترس بودن سایت با و بدون درج index.php.html.asp در انتهای آدرس
یکی دیگر از موارد شایع در خصوص ایجاد صفحات و محتوای تکراری، دسترسی به سایت با و بدون درج عباراتی چون index.php، index.html، index.asp و غیره است؛ شاید گمان کنید موتورهای جستجو تشخیص می دهند که صفحه ایندکس یک سایت، همان صفحه اصلی آن است، اما در پاسخ باید بگوییم که معمولا اینطور نیست، در برخی از سرور ها ممکن است تنظیمات پیش فرض تغیر داده شوند و صفحه اصلی سایت با عبارتی دیگر تنظیم شده باشد و لذا فایل ایندکس الزاما به معنی صفحه اصلی نیست، به همین دلیل موتورهای جستجو ممکن است کماکان بر ایندکس جداگانه مطالب اصرار داشته باشند، لذا بهتر است با شناسایی لینک مورد تقاضا (REQUEST URI)، آن را تجزیه تحلیل کرده و به حالت استاندار ریدایرکت کنید.
- سایت ها و وبلاگ هایی که مطالب شما را کپی می کنند
کپی مطالب به صورت مستقیم حتی بدون ذکر نویسنده و نامی از منبع و بدون هیچ تغییر محسوسی در مطلب، کاری است که متاسفانه بعضا شاهد آن هستیم، البته عده ای بدون سوء نیت و آگاهی این کار را صرفا از روی علاقه به درج محتوا در وبلاگ یا سایتشان انجام می دهند اما برخی نیز این کار را به عنوان افتخار خود تلقی کرده یا در پی سوء استفاده از مطالب شما برای مقاصد خودشان هستند، به هر صورت انجام این نوع کارها نتنها از دید ما امری ناپسند و بی ارزش است، بلکه از دید ربات های خزنده و جستجوگر نیز نامطلوب شمرده می شود، اگر آنها به صفحه ای برخورد کنند که قبلا محتوای آن را ایندکس کرده اند، به دید یک کپی به آن نگاه خواهند کرد و بدترین حالت زمانی است که قبل از ایندکس مطلب اصلی به کپی و بدل آن برسند! البته در دراز مدت نهایتا با معیارهایی خواهند فهمید که کدام سایت یا وبلاگ در حال سرقت بی سر و صدای مطالب و زحمات دیگری است و عواقب این کار دامن آن سایت یا وبلاگ را خواهد گرفت (در بدترین حالت موجب حذف کامل آن سایت یا وبلاگ از لیست جستجو خواهد شد)، نتیجه اینکه نه مطالب دیگران را بدون درج منبع و لینک مستقیم کپی کنیم و نه اجازه دهیم مطالبمان را بی زحمت و راحت مورد سوء استفاده قرار دهند (البته حالت اخیر تا حدود زیادی بستگی به وجدان و شخصیت طرف مقابل دارد)، اما می توان اقداماتی نیز انجام داد، مثلا از متاتگ copyright استفاده کرد.
<meta name="copyright" content="(c) 2012 http://webgoo.ir" />
یا عباراتی را مبنی بر کسب اجازه از نویسنده مطلب و درج لینک را در قسمت فوتر سایت قرار داد و یا حتی اجاز کپی برداری را به راحتی به کاربران نداد (البته این کار توصیه نمی شود)، ولی در مجموع ممانعت از این کار بیش از اینکه به شما بستگی داشته باشد به کاربران و شخصیت آنها بستگی دارد، چرا که با همه ی این تفاسیر باز ممکن است مطالبتان به صورت غیر مجاز کپی برداری شود.

امکانات گوگل برای وبمسترها


در پایان این مطلب بد نیست یکی از کاربردی ترین ابزارهای وب برای وبمسترها را معرفی کنیم، این ابزار، سرویس وبمستر گوگل است که با داشتن یک حساب جی میل به راحتی می توانید از آن در آدرس زیر استفاده کنید.
http://www.google.com/webmasters
امکانات بسیار خوبی در این سرویس توسط گوگل ارائه می شود که حتما یک وب نویس حرفه ای باید نیم نگاهی به آنها داشته باشد.
توجه کنید که داشتن مطالب تکراری به معنی عیبی بزرگ و غیر قابل حل نیست، اما نداشتن و به حداقل رسانیدن این موارد، کمکی بزرگ است برای اینکه زحماتتان هر چه موثرتر به ثمر بنشیند و بازدهی کارتان بیشتر شود.

نظرات (۱)

اطلاعات و مطالب وب سایت تون خلی خوب و آموزنده است با تشکر
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
تجدید کد امنیتی