نکات و اصول مهم در برنامه نویسی(1)
1- هرگز فایل های ضمیمه شده رو با پسوند inc. ذخیره نکنید! یعنی name.class.inc رو به name.class.php تغییر بدید. و یا از .HTAccess برای تعیین سطح دسترسی inc. استفاده کنید.
2- حتاًالمکان تگ های اضافی و فضا های خالی را حذف کنید و از باز و بسته کردن بیش از حد تگهای سرور خودداری کنید(مخصوصاً در پروژه های سنگین).
3- کلاس را با Final و Initialize/__construct شروع کنید و با __destruct پایان دهید و با قرار دادن ; در آخر کلاس کامل ببندینش:
final class Name { public function Name() { } final public function __construct() { #... } final public function __destruct() { #... } }; |
4- برای Escape کردن کاراکترهای ویژه و جلوگیری از خیلی از حملات SQL از دستورات زیر استفاده کنید:
کد PHP:
get_magic_quotes_gpc ? $Str_Input= @stripslashes($Str_Input) : $Str_Input= @addslashes($Str_Input); if(function_exists('mysql_real_escape_string')): @mysql_real_escape_string($Str_Input); else: @mysql_escape_string($Str_Input); endif; |
5- در کلاس خود از تابع پیش فرض clone__ برای جلوگیری از تقلید(Clone)(شبیه سازی) توابع استفاده کنید:
کد PHP:
final public function __clone() { exit; } |
6- هرگز از Cookie برای ذخیره کلمه رمز یا مقادیر نمایشی استفاده نکنید(قابل تغییر هستند).
7- در خط اول هر فایل PHP، بعد از خطا زدایی کامل صفحه، دستور (error_reporting(0 را قرار بدید که تمامی خطا ها و هشدار ها ignore بشن. تا از سو استفاده های احتمالی جلوگیری بشه.
8- حتاًامکان از دستور GET_$ برای دریافت مقادیر استفاده نکنید. و به جاش از دستور REQUEST_$ استفاده کنید(مقدارش رو هم فیلتر کنید): Request شامل GET, POST, Cookie می باشد.
10- در اول هر کلاس و تابع حتماً وجود و بودن کلاس و تابع رو چک کنید!
کد PHP:
if(!extension_loaded('mysql')): exit('Extension MySQL not loaded.'); endif; ... if(function_exists('mysql_real_escape_string')): mysql_real_escape_string(...); else: mysql_escape_string(...); endif; ... |
11- هرگز از روش زیر برای آدرس دهی(Action) استفاده نکنید:
کد PHP:
<form name="Frm_Test" action="<?= $_Server['PHP_Self'] ?>" method="post" target="_self"> ... </form> |
چراکه قابل تغییر و دستکاری هستند(برای حملات (XSS(Cross Side Scripting).
راه حل:
کد PHP:
$_PHPSelf= @basename(__File__); $_Server['PHP_Self]= @substr($_Server['PHP_Self'], 0, @strpos($_Server['PHP_Self], $_PHPSelf)) . $_PHPSelf; |
13- حتماً تمامی خروجی ها/ورودی ها رو به نوع مربوطش تبدیل کنید:
کد PHP:
echo((string)'Test ' . $_Var_Test); return((string)$_Str_Test); return((int)$_Int_Test); |
14- و در آخر، بهتر و ایمن تره اگر تمامی تگ ها و بلاک ها رو کامل مشخص کنید و کامل ببندید:
حافظه و Parser هم دچار مشکل نمیشه.
کد PHP:
if(...): ... endif; if(...): ... else(...): ... endif; if(...): ... elseif(...): ... else(...): ... endif; if(...) { ... }; if(...): ... { ... } else { ... }; while(...): endwhile; while(...) { }; for... foreach... ... |
در مقاله بعدی تعداد دیگه ای از این نکات و اصول مهم رو می نویسم(سطح متوسط).
موفق باشید.
منبع:http://forum.iranphp.org /س
{{Fullname}} {{Creationdate}}
{{Body}}