08-01-1395، 09:29 ق.ظ
اگر چه PHP یک زبان وب سایت همه کاره میباشد که اجازه ساخت و ساز سریع محتوای پویا وب سایت مانند سبدهای خرید و RSS را می دهد ولی وب سایت شما را هم می تواند در معرض خطر بگذارند خصوصا انهایی که از یک هاست مشترک برای هاستینگ وب سایت خود استفاده می کنند و استفاده از هاست اشتراکی خطرات زیادی برای امنیت PHP دارد. هکرها می دانند که چگونه می توانند از نقاط ضعف PHP مثل برگردانند داده های مشتریان و غیره بهره برداری کنند. بنابراین خود را آماده کنید برای فهمیدن خطرات امنیتی PHP و بروز رسانی کد های خود برای جلوگیری و به حداقل رساندن نفوذ هکرهای به وب سایت خود.
SQL Injection
یکی از شایع ترین خطرات امنیتی مربوط به PHP تزریق SQL و یا ( SQL Injection ) نامیده می شود. Sql injection یک تکنیک که یک هکر با تزریق کدهای مخرب sql در کوئری تعبیه شده در وب سایت می تواند به وب سایت شما آسیب برساند. به عنوان مثال ممکن است هکر SQL را در صفحه فورم شما درج کند در نتیجه همه معلوماتی که ممکن است یک کاربر در این فورم برای ارسال به شما درج کند با ارزش زمینه آن از طریق کیوری SQL به هکر ارسال خواهد شد.
به عنوان مثال فرض کنید وب سایت شما از کاربر آدرس ایمیل او را طلب کند تا شما بتوانید معلومات او را داشته و در صورت نیاز با او تماس بگیرید. با این حال کاربر بر فرض مثال یک هکر باشد و می خواهد همه اطلاعات مربوط به کاربران شما را بدست بیاورد بنابراین به جای تایپ کردن ایمیل خودش در فیلد فورم ‘y’ = ‘y’ را تایپ کند.
در اصل کیوری شما این گونه است
Select Email
From User-Table
Where Email.Address = EmailField_Value
می شود
Select Email
From User-Table
Where Email.Address = ‘y’ = ‘y’
کلاس ‘y’ = ‘y’ همیشه مقدار true را دارد. با این کار هکر به تمام آدرس ایمیل های کاربران شما دسترسی پیدا می کند.
حفظ و محافظت خود از تکنیک SQL Injection ساده میباشد. تنها با فراخوانی یک تابع که وظیفه آن چک کردن داده ها قبل از ارسال از طریق کیوری میباشد. برای اطلاعات بیشتر می توانید به Open Web Application Security Project مراجعه کنید.
2 ) XSS Cross Site Scripting
معمولا به عنوان XSS Cross Site Scripting اشاره می شود. هنگامی که یک هکر logic خود را در HTML logic وب سایت شما درج می کند.
مثال بالا را در نظر بگیرید.هکر برای ارسال پیام در وب سایت ثبت نام می کند و سپس پست پیام خود را با Javascript routine فرمت می کند که باعث جریان پی در پی popups می شود تا بر روی صفحه نمایش کاربران یک فروم ظاهر شود. با این کار کاربران مجبور هستند یا بر popups کلیک کنند یا مرورگر خود را ببندند.
به طور معمول XSS از طریق لینک های مخرب اجرا می شود. حتی بدتر از آن cross-site scripting معمولا طبیعی به نظر می رسد و آن هم به این دلیل که به عنوان بخشی از قابلیت وب سایت به حساب می آید. نتیجه نهایی آن این است که شما کاربران بلقوه خود را از دست خواهید داد به این دلیل که آنها وب سایت شما را به عنوان یک تهدید خواهند دید.
مانند SQL Injection شما باید تمام کدهای کاربران خود را چک کنید و اطمینان حاصل کنید که هیچ کدام یک از آنها از کد های مخرب استفاده نکنند. برای کسب اطلاعات بیشتر می توانید در Microsoft چک و بررسی کنید.
3 ) Register_Globals
تنظیمات پیکربندی PHP به عنوان Register_Globals شناخته می شود که به طور خودکار تمام متغیرات برنامه را در یک محیط جهانی جایگزینی می کند تا آن را برای توسعه دهندگان وب آسان و سرعت آن را در بازیابی برای کاربران دنیا بیشتر کنید.
مشکل این کار این است که سایت شما را ممکن است در معرض تهدیدات امنیتی جدی قرار دهد . به عنوان مثال یک هکر بالقوه می تواند با یک پارامتر $_GET یک کالا را به صورت رایگان با استفاده از سبد خرید فروشکاه وب سایت شما سفارش و خرید کند.
PHP معمولا با این تنظیمات خاموش می شود و برای اطمینان از آن فایل محلی PHP.ini ( local PHP.INI ) را چک کنید.
منبع: طراحی سایت دارکوب
SQL Injection
یکی از شایع ترین خطرات امنیتی مربوط به PHP تزریق SQL و یا ( SQL Injection ) نامیده می شود. Sql injection یک تکنیک که یک هکر با تزریق کدهای مخرب sql در کوئری تعبیه شده در وب سایت می تواند به وب سایت شما آسیب برساند. به عنوان مثال ممکن است هکر SQL را در صفحه فورم شما درج کند در نتیجه همه معلوماتی که ممکن است یک کاربر در این فورم برای ارسال به شما درج کند با ارزش زمینه آن از طریق کیوری SQL به هکر ارسال خواهد شد.
به عنوان مثال فرض کنید وب سایت شما از کاربر آدرس ایمیل او را طلب کند تا شما بتوانید معلومات او را داشته و در صورت نیاز با او تماس بگیرید. با این حال کاربر بر فرض مثال یک هکر باشد و می خواهد همه اطلاعات مربوط به کاربران شما را بدست بیاورد بنابراین به جای تایپ کردن ایمیل خودش در فیلد فورم ‘y’ = ‘y’ را تایپ کند.
در اصل کیوری شما این گونه است
Select Email
From User-Table
Where Email.Address = EmailField_Value
می شود
Select Email
From User-Table
Where Email.Address = ‘y’ = ‘y’
کلاس ‘y’ = ‘y’ همیشه مقدار true را دارد. با این کار هکر به تمام آدرس ایمیل های کاربران شما دسترسی پیدا می کند.
حفظ و محافظت خود از تکنیک SQL Injection ساده میباشد. تنها با فراخوانی یک تابع که وظیفه آن چک کردن داده ها قبل از ارسال از طریق کیوری میباشد. برای اطلاعات بیشتر می توانید به Open Web Application Security Project مراجعه کنید.
2 ) XSS Cross Site Scripting
معمولا به عنوان XSS Cross Site Scripting اشاره می شود. هنگامی که یک هکر logic خود را در HTML logic وب سایت شما درج می کند.
مثال بالا را در نظر بگیرید.هکر برای ارسال پیام در وب سایت ثبت نام می کند و سپس پست پیام خود را با Javascript routine فرمت می کند که باعث جریان پی در پی popups می شود تا بر روی صفحه نمایش کاربران یک فروم ظاهر شود. با این کار کاربران مجبور هستند یا بر popups کلیک کنند یا مرورگر خود را ببندند.
به طور معمول XSS از طریق لینک های مخرب اجرا می شود. حتی بدتر از آن cross-site scripting معمولا طبیعی به نظر می رسد و آن هم به این دلیل که به عنوان بخشی از قابلیت وب سایت به حساب می آید. نتیجه نهایی آن این است که شما کاربران بلقوه خود را از دست خواهید داد به این دلیل که آنها وب سایت شما را به عنوان یک تهدید خواهند دید.
مانند SQL Injection شما باید تمام کدهای کاربران خود را چک کنید و اطمینان حاصل کنید که هیچ کدام یک از آنها از کد های مخرب استفاده نکنند. برای کسب اطلاعات بیشتر می توانید در Microsoft چک و بررسی کنید.
3 ) Register_Globals
تنظیمات پیکربندی PHP به عنوان Register_Globals شناخته می شود که به طور خودکار تمام متغیرات برنامه را در یک محیط جهانی جایگزینی می کند تا آن را برای توسعه دهندگان وب آسان و سرعت آن را در بازیابی برای کاربران دنیا بیشتر کنید.
مشکل این کار این است که سایت شما را ممکن است در معرض تهدیدات امنیتی جدی قرار دهد . به عنوان مثال یک هکر بالقوه می تواند با یک پارامتر $_GET یک کالا را به صورت رایگان با استفاده از سبد خرید فروشکاه وب سایت شما سفارش و خرید کند.
PHP معمولا با این تنظیمات خاموش می شود و برای اطمینان از آن فایل محلی PHP.ini ( local PHP.INI ) را چک کنید.
منبع: طراحی سایت دارکوب