مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

nasim.rahmati

عضویت از 1395/10/01

چند نکته امنیت بیشتر سایت

  • سه شنبه 22 فروردین 1396
  • 18:01
تشکر میکنم

1 – استفاده از فایل robot.txt

فایل robots.txt یک فایل متنی ساده می باشد که بیشتر به جهت سئو (search engine optimaiz) در سایتها استفاده می شود. اما میتوان از این فایل جهت محافظت از فولدرهایی که نمیخواهید دیتا داخل آنها توسط موتورهای جستجو دیده شود استفاده نمایید.
فایل robots.txt را باید در ریشه سایت خود قرار دهید و مانند مثال از آن استفاده نمایید.
ابتدا یک فایل با نام robots.txt ایجاد کنید و سپس درون آن عبارتهای زیر را قرار دهید:
User-agent:*
Disallow: /upload/
با استفاده از این دستور رباتهای جستجوگر محتویات داخل پوشته upload را ایندکس نمیکنند.
اینکار از این جهت مهم است که شاید شما در سایت پوشه ای داشته باشد که محتوای فایلهای آپلود شده در آن مخصوص اعضای سایت باشد یا نخواهید اطلاعات داخل این پوشه در نتایج جستجوهای اینترنتی دیده شود یکی از ابتدایی ترین کارهایی که لازم است انجام دهید ایجاد همین فایل robots.txt می باشد که تاثیر بسزایی در این امر دارد و همچنین به سئو سایت شما نیز کمک شایانی میکند.
اگر میخواهید یک فایل خاص را از دید رباتها پنهان نمایید باید آدرس دقیق فایل را در داخل robots.txt وارد نمایید.
توجه نمایید که محتویاتی که داخل این فایل قرار میگیرد از دید رباتها حساس به حروف بزرگ و کوچک می باشد در نتیجه پوشه Upload با پوشه upload کاملا متفاوت می باشد.

سایت تخفیف ، دیجی کالا

 
2 – اعتبار سنجی کامل فرم ها

هیچ سایت داینامیکی بدون فرم معنای داینامیک را نمی دهد. زمانی که در صفحات سایت خود از فرم های مختلف مانند ثبت نام , تماس با ما و… استفاده می نمایید فراموش نکنید که اطلاعات فرم ها را هم در سمت کلاینت و هم در سمت سرور قبل از ارسال آنها به دیتابیس بررسی نمایید.
برای اعتبار سنجی سمت کلاینت میتوانید از javascript یا jquery استفاده نمایید که یکی از بهترین پلاگینهای موجود برای اعتبارسنجی فرم jqueryvalidation می باشد که قابلیت های بسیار زیادی در اعتبار سنجی انواع فرم ها دارد.
در سمت سرور قبل از اینکه دیتا ارسالی توسط کاربر به دیتابیس برسد باید اعتبار سنجی کاملی انجام دهید زیرا ممکن است کاربری مزاحم کاراکترها یا عبارتهای خاصی را به جهت نفوذ به سایت در فرم وارد کرده باشد در صورتی که اعتبار سنجی شما کامل انجام نشده باشد ممکن است باعث هک شدن سایت و از بین رفتن اطلاعات شما شود.
یکی از ساده ترین کاراکترهایی که برای نفوذ به سایت از طریق متد sql injection انجام می شود ارسال ‘ از طریق فرم ها به دیتابیس می باشد که براحتی میتوانید توسط توابعی مانند addslashes یا mysql_real_escape_string جلوی آنرا بگیرید این توابع قبل از ‘ یک \ به جهت غیر فعال کردن آن قرار می دهند.
همچنین برای جلوگیری از حملات xss بهتر است از توابعی مانند striptags یا htmlentities استفاده نمایید.
نحوه استفاده از این توابع در سایت رسمی php به طور کامل شرح داده شده است.

3- کنترل کامل فایلهای در حال آپلود

اگر در سایت خود فرمی دارید که از طریق آن فایلی قرار است روی سایت آپلود شود باید دقت ویژه ای در بررسی فایلهای آپلود شده داشته باشید.
قبل از هرچیز باید پسوند فایلهای مجاز را مشخص نمایید یعنی اگر کاربر قرار است عکسی آپلود نماید حتما پسوند های مجاز را مشخص نمایید. هم در سمت کلاینت و هم در سمت سرور مانند آنچه در قبل گفته شده اعتبارسنجی فایل را انجام دهید.
برخی مواقع پیش میاید که مهاجم با تغییر در پسوند فایل سعی در دور زدن کدها اعتبارسنجی بر میاید به طور مثال مهاجم فایلی به نام shell.php دارد و آنرا به صورت shell.php.jpg تغییر نام می دهد در این حالت در صورتی که کد اعتبار سنجی شما کامل و کاربردی نباشد فایل به طور موفقیت آمیز بر روی سایت شما آپلود می شود.
همیشه سعی کنید فایل آپلود شده را با تغییر نام و پسوندی جدید بر روی سرور قرار دهید که دسترسی مستقیم به آن غیر ممکن باشد.
همچنین در سرورهای لینوکس با تغییر سطح دسترسی فولدر آپلود به ۶۶۶ میتوانید از اجرای مستقیم فایلها جلوگیری کنید.
و یا با تغییراتی در فایل htaccess میتوانید از اجرا شدن فایلها با ۲ پسوند جلوگیری کنید که در ادامه به آنها اشاره خواهیم کرد.
بهترین راه برای امنیت در این حالت جلوگیری از دسترسی مستقیم کاربران به فایلها می باشد که شما میتوانید پوشه آپلود خود را در یک سطح بالاتر از ریشه سایت قرار دهید و با استفاده از توابع یا اسکریپت های خاص به فایلها دسترسی داشته باشید تا نیازی به آدرس دهی مطلق به فایلها نباشد.
مثلا فایل تصویر خود را به صورت < img src=”/imageload.php?id=133″ / > در سایت قرار دهید و بعد با استفاده از متد get آنرا از دیتابیس فراخوانی نمایید.

تخفیف استخر ، تخفیف رستوران

 
4- استفاده از htaccess

فایل htaccess در واقع برای پیکربندی و تنظیمات خاص در وب سرور apache می باشد که معمولا در ریشه سایت قرار میگیرد.با استفاده از این فایل میتوانید تنظیمات آپاچی را تغییر دهید به طور مثال redirect کردن صفحات یا مسدود سازی ip یک کاربر و…
در این مقاله تنها به چند مورد کاربردی برای امنیت وب سایت اشاره می شود برای استفاده بهتر از فایل htaccess با جستجو به نتایج بهتری خواهید رسید.
ابتدا باید RewriteEngine on را در ابتدای فایل خود قرار دهید و سپس کدهایی که میخواهید درون این فایل بنویسید.
توجه کنید که htaccess حساس به حروف بزرگ و کوچک می باشد.
برای مسدود سازی یک Ip میتوانید از نمونه کد زیر استفاده نمایید:

RewriteCond %{REMOTE_ADDR} ^(A.B.C.D)$
RewriteRule ^/* http://www.domain.com/sorry.html [L] که به جای ABCD اجزای ۴ گانه ip قرار میگیرید و به جای sorry.html صفحه ای که میخواهید کاربر به آن هدایت شود.

 
5- عدم نمایش خطا در سایت

یکی از جذابترین و یا شاید ساده ترین راه های نفوذ به وب سایت استفاده از جستجوگر محبوب گوگل می باشد!
معمولا هکرها در سایتها به دنبال خطا می باشند خطایی که به صورت بصری قابل مشاهده بوده و می توان از آن در جهت نفوذ به سایت استفاده کرد.
گوگل این امکان را بطور کامل برای افرادی که تازه با چند متد هک آشنا شده اند فراهم کرده است.
به طور مثال سایتی دارای خطایی از نوع warning می باشد.
هکر با جستجوی عبارت intext:warning:mysql_result با لیستی از صفحات خطای سایتهایی که گوگل آنها را در دیتابیس خود ذخیره کرده روبرو می شود و با کمی تغییر در نوع جستجو به اهداف دقیق تر و یا سایتهای حساس تری روبرو می شود.
و باز به طور مثل با جستجوی عبارت site:.org intext:warning:mysql_result لیستی از سایتهای دولتی نمایش داده می شود.
در حالت خطای warning حتی نام کاربری ورود به پنل اصلی سایت نمایش داده می شود که هکر با استفاده از brute force
و کمی تلاش می تواند پسورد سایت را پیدا کند.
به همین دلایل است که باید تمامی خطا ها در هنگام بالا بودن سایت غیر قابل نمایش باشد.در حالت کلی بهتر است در یکی از فایلهای اصلی سایت خود که در بقیه قسمتها فراخوانی می شود که معمولا این فایل میتواند config.php باشد از تابع mysql_error(0) استفاده کنید تا حتی اگر خطایی هم در اجرای روند کدها رخ داده این خطا برای کاربران نمایش داده نشود.

 
6 – استفاده از password protect

یکی از بهترین راه ها برای جلوگیری از ورود هکر به فولدهای خاص استفاده از قابلیت password protect در پنل مدیریت cpanel می باشد.مثلا اگر فایلهای مدیریتی سایت شما در داخل پوشه ای به نام Admin قرار دارد و با وارد کردن نام کاربری و پسورد وارد این پوشه می شوید و به پنل مدیریت سایت دسترسی دارید با استفاده از این قابلیت می توانید بر روی این پوشه پسوردی قرار دهید.
از این پس قبل از ورود شما به صفحه Admin پنجره ای ظاهر شده که از شما نام کاربری و پسوردی را میخواهد که در قسمت password protect تنظیم کرده اید.
در این حالت حتی اگر هکر از طریق متد sql injection به پسورد مدیریت سایت دسترسی پیدا کرده باشد نمیتواند به پنل مدیریت سایت نفوذ کند زیرا ابتدا باید از پسوردی که شما بر روی پوشه خود گذاشته اید عبور کند.
در نتیجه بهتر است همیشه فایلهای مربوط به صفحات مدیریت خود را در پوشه ای جدا از فایلهای اصلی سایت قرار دهید تا بتونید از این طریق از آنها محافظت نمایید.

 

7- Hash کردن رمزهای ورود یا داده های حساس

در زبان آموزش php توابع زیادی برای hash کردن داده ها وجود دارد که براحتی میتوانید از آنها برای کد کردن اطلاعات حساس خود استفاده کنید.
یکی از توابع کاربردی و ساده base64_encode() می باشد که معمولا از این تابع برای کد کردن عبارتهای طولانی مانند کپی رایت استفاده می شود که برای کاربر عادی تشخصیص و رمز گشایی آن کمی مشکل می باشد. برای استفاده کافی است تابع را نوشته و دیتایی که میخواهید encode شود داخل پرانتر بنویسید.
از دیگر تابع های کاربردی میتوان به md5 اشاره کرد. md5 یک تابع برگشت ناپذیر می باشد یعنی رمزگشایی از آن مانند base64 آسان نیست بلکه برای رمزگشایی دیتاهای مختلف با عبارت md5 شده مقایسه می شود و در صورتی که این مقایسه صحیح باشد جواب برگردانده می شود. از این تابع بیشتر به جهت رمز دار کردن پسوردها استفاده می شود .
تابع به صورتی عمل میکند که هر تعداد کاراکتری که به آن بدهید آنرا تبدیل به یک عبارت ۳۲ تایی مینماید. به طور مثال ۱۲۳۴۵۶ در حالت md5 به صورت e10adc3949ba59abbe56e057f20f883e دیده خواهد شد.
تابع دیگری مانند md5 وجود دارد که sha1 نام دارد در این حالت عبارت ورودی به یک رشته ۴۰ تایی تبدیل می شود.
شما میتوانید با استفاده از این توابع و عملیات salt پسوردهای پیچیده ای تولید نمایید که رمزگشایی آنها کاری زمانبر و بسیار سخت باشد.در واقع Salt یک روش است که از طریق آن رشته ای را میتوان به کد hash شده اضافه کرد تا کرک کردن آن سخت تر شود.

تخفیف سالن زیبایی ، تخفیف کالا

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

tarahimodern

عضویت از 1397/10/04

  • جمعه 21 دی 1397
  • 13:21

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

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

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

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)