چه چيزهايي باعث ميشه صفحات php هك بشن؟؟
Printable View
چه چيزهايي باعث ميشه صفحات php هك بشن؟؟
1. بیشتر مواقع دریافت مقادیر از طریق فرم ها:
برای طراحی فرم ها دقت زیادی نیاز است. فرم ها باید در هنگام تحلیل به خوبی تجزیه و بررسی بشوند به طوری که نتوان با فرم کدی را ارسال کرد.
2.دریافت مقادیر از طریق url:
باید جلوی مقادیری که از طریق url ارسال می شوند را گرفت.
اين مورد رو يه كم بيشتر توضيح ميديد.نقل قول:
برای طراحی فرم ها دقت زیادی نیاز است. فرم ها باید در هنگام تحلیل به خوبی تجزیه و بررسی بشوند به طوری که نتوان با فرم کدی را ارسال کرد.
يعني در صورت هك شدن مثلا چه مشكلي پيش مياد.
فرض کنید یک فرم در یک صفحه ی وب وجود دارد که در آن فرم یک Input به نام username وجود دارد. کاربر فرم را ارسال می کند. حالا می خواهیم چیزی که کاربر درون Input نوشته شده است را مطابق کد زیر نمایش دهیم:
[PHP]
echo $_GET['username'];
[/PHP]
آیا ممکن است خروجی کد بالا چیزی شبیه زیر باشد؟
[PHP]<script>/*changing admin password script*/</script>[/PHP]
بله! و این یک اشتباه در برنامه نویسی PHP می باشد. با این کار ممکن است صفحه ی خود را نفوذپذیر کنید.
نکته و راه حل: همیشه برای دریافت مقادیر از فرم ها از تابع htmlentities استفاده کنید تا > و < و سایر علائم html را از ورودی کاربر حذف کند.
برای مثال کد بالا به صورت زیر تبدیل می شود:
[PHP]echo htmlspecialchars($_GET['username'], ENT_QUOTES);[/PHP]
تعداد زیادی از اسکریپت های موجود در جهان دارای این عیب هستند. دقت کنید شما چنین اشتباهی را مرتکب نشوید.
فرق htmlentities با htmlspecialchars چيه؟؟؟
فرق کاربردی ندارند و مشابه هم می باشندنقل قول:
htmlentities کاملتر از htmlspecialchars می باشد
htmlentities همه ی کاراکترهای وِیژه رو تبدیل می کنه ولی htmlspecialchar فقط کاراکترهای زیر را:
[PHP]'&' (ampersand) becomes '&'
'"' (double quote) becomes '"' when ENT_NOQUOTES is not set.
''' (single quote) becomes ''' only when ENT_QUOTES is set.
'<' (less than) becomes '<'
'>' (greater than) becomes '>' [/PHP]