امنیت در PHP

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست مطالب:

  1. حمله XSS ، در PHP و نکات امنیتی مرتبط با آن
 

P O U R I A

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

حمله XSS ، در PHP و نکات امنیتی مرتبط با آن

یکی از حملاتی که هکرها می توانند به سایت ما داشته باشند، حمله XSS می باشد. عبارت XSS از Cross-site scripting گرفته شده است که برای عدم اشتباه گرفتن آن با CSS ، حرف اول آن به جای C ، برابر X در نظر گرفته شده است. در این نوع حمله، هکر کدهای مورد نظر خود را در میان کدهای صفحه سایت ما قرار می دهد و بنابراین این کدها، در مرورگر کاربران سایت اجرا خواهد شد.شاید بتوان ساده ترین حالت از حمله XSS را به این صورت در نظر گرفت که هکر، در قسمت نظرات کاربران، به جای نوشتن یک متن معمولی، یک سری کد می نویسد، آن کدها در پایگاه داده سایت ذخیره می شود تا بعدا به کاربران، به عنوان نظرات کاربران قبلی، نمایش داده شود. بنابراین کاربرانی که به آن بخش از سایت می روند و به طور طبیعی، باید نظرات به آنها نمایش داده شود، کدهای هکر در مرورگرشان اجرا می شود. راه حل این مورد، فیلتر کردن ورودی های کاربران در قسمت نظرات می باشد (و یا در هر بخش دیگری از سایت که کاربر توسط یک فرم، اطلاعاتی را وارد می کند).

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

یک حالت دیگر این است که هکر، لینکی را به کاربران نمایش می دهد تا کاربران بر روی آن کلیک کنند، لینک به صفحه ای از سایت ما اشاره می کند که در آن، از روش GET برای دریافت مقدار یک ورودی استفاده کرده ایم، بنابراین هکر، در آدرس لینک، کدهای مخرب مورد نظر خود را به جای مقدار آن متغیر قرار می دهد. مثلا هکر آدرس لینک را به صورت زیر تعیین می کند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]http://www.www.www.iran-eng.ir/index.php?input=HackerCodes[/FONT]
[/FONT][/COLOR]
در آدرس فوق، هکر به جای عبارت HackerCodes ، یک سری کد مخرب خواهد نوشت که به عنوان مقدار متغیر input در نظر گرفته می شود. حال فرض کنید که کدهای صفحه مورد نظر که ما نوشته ایم، به صورت زیر باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#000088]$_GET[/COLOR][COLOR=#009900][[/COLOR][COLOR=#0000FF]'input'[/COLOR][COLOR=#009900]][/COLOR][COLOR=#339933];[/COLOR]
[B]?>[/B][/FONT]
[/FONT][/COLOR]
بنابراین چون مقدار متغیر input را (که البته همان کدهای مخرب هکر است) با دستور echo به خروجی صفحه می دهیم، بنابراین کدهای هکر، در صفحه و در مرورگر کاربر، اجرا خواهد شد.

برای جلوگیری از اینمورد، باید با تابع htmlspecialchars در PHP ، ورودی تعیین شده به عنوان مقدار متغیر را از کدهای مخرب، فیلتر کنیم، یعنی این بار کدها را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]<?php[/B]
[COLOR=#B1B100]echo[/COLOR] [COLOR=#990000]htmlspecialchars[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000088]$_GET[/COLOR][COLOR=#009900][[/COLOR][COLOR=#0000FF]'input'[/COLOR][COLOR=#009900]][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]?>[/B][/FONT]
[/FONT][/COLOR]
 

EngMrj

عضو جدید
دوست عزیز اطلاعاتتون در مورد نوع حمله درست بود اما کدی که نوشتید مشکل امنیتی داره و اصلا توصیه نمیشه و رو کوتیشن مشکل داره .
لطفا در مورد چیزی که کامل اطلاعات ندارید صحبت نکنید چون باعث گمراهی دیگران میشه کد درست هم برای دوستان میزارم تا به مشکل نخورن.
PHP:
htmlspecialchars($text,ENT_QUOTES,"UTF-8");
اگه دوست داشتید کتاب بنده در مورده امنیت به زودی منتشر میشه
 

Similar threads

بالا