PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : نکات و اصول مهم در برنامه نویسیphp - بخش 1



TAHA
11-05-2009, 11:24 AM
1- هرگز فایل های ضمیمه شده رو با پسوند inc. ذخیره نکنید! یعنی name.class.inc رو به name.class.php تغییر بدید. و یا از .HTAccess برای سطح دسترسی inc. استفاده کنید.

2- حتاًالمکان تگ های اضافی و فضا های خالی را حذف کنید و از باز و بسته کردن بیش از حد تگهای سرور خودداری کنید. در عمل تفاوتی ندارند ولی در حجم و سرعت، به ازای هر 1 کاراکتر اضافی 1 بایت حجم فایل و صفحه و Loading میبره بالا(مخصوصاً در پروژه های سنگین)!

3- کلاس های خود را با قرار دادن ; کامل ببندید و کلاس را با Final و Initialize/__construct شروع کنید تا Clone نشوند:
PHP Code:


final class Name
{
final public function __construct()
{
#...
}
};


4- برای Escape کردن کاراکترهای ویژه و جلوگیری از خیلی از حملات SQL از دستورات زیر استفاده کنید:

PHP Code:

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 Code:


final public function __clone()
{
return(@exit('Cloning is not allowed.'));
}


6- هرگز از Cookie/Session برای ذخیره کلمه رمز یا مقادیر نمایشی استفاده نکنید(قابل تغییر هستند). خیلی ها از جمله ... این مورد رو در نرم افزارشون رعایت نمی کنند و بارها آسیب های جدی و پیش پا افتاده ای رو متحمل میشن.

7- در خط اول هر فایل PHP، بعد از خطا زدایی کامل صفحه، دستور (error_reporting(E_ALL@ را قرار بدید که تمامی خطا ها و هشدار ها رو نمایش بده. تا از سو استفاده های احتمالی جلوگیری بشه.

8- حتاًامکان از دستور GET_$ برای دریافت مقادیر استفاده نکنید. و به جاش از دستور REQUEST_$ استفاده کنید(مقدارش رو هم ***** کنید).

9- حتماً تمامی دستورات Exit و Die رو با Ignore کردن خطا @ و بستن محتوا استفاده کنید:
PHP Code:


@exit(''); یا @die('');


10- در اول هر کلاس و تابع حتماً وجود و بودن کلاس و تابع رو چک کنید!
PHP Code:


if(!extension_loaded('standard')): @exit('Extension Standard not loaded!');
elseif(!extension_loaded('mysql')): @exit('Extension MySQL not loaded!');
elseif(!class_exists('ClassName')): @exit('Class ClassName not exists!');
endif;
...
if(function_exists('mysql_real_escape_string')): @mysql_real_escape_string(...);
else: @mysql_escape_string(...);
endif;


11- هرگز از روش زیر برای آدرس دهی(Action) استفاده نکنید:
PHP Code:


<form name="Frm_Test" action="<?= $_Server['PHP_Self'] ?>" method="post" target="_self">
...
</form>

چراکه قابل تغییر و دستکاری هستند(برای حملات (XSS(Cross Side Scripting).
راه حل:
PHP Code:


$_PHPSelf= @basename(__File__);
$_Server['PHP_Self]= @substr($_Server['PHP_Self'], 0, @strpos($_Server['PHP_Self], $_PHPSelf)) . $_PHPSelf;



13- حتماً تمامی خروجی ها رو به نوع مربوطش تبدیل کنید:
PHP Code:


echo((string)'Test ' . $_Var_Test);

return((string)$_Str_Test);

return((integer)$_Int_Test);


14- و در آخر، بهتر و ایمن تره اگر تمامی تگ ها و بلاک ها رو کامل مشخص کنید و کامل ببندید:
حافظه هم دچار مشکل نمیشه.
PHP Code:


if(...): ...
endif;
if(...): ...
else(...): ...
endif;

if(...): ...
elseif(...): ...
else(...): ...
endif;

if(...)
{
...
};

if(...): ...
{
...
}
else
{
...
};

while(...):
endwhile;

while(...)
{
};

for...
foreach...
...


در مقاله بعدی تعداد دیگه ای از این نکات و اصول مهم رو می نویسم(سطح متوسط).
موفق باشید.