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...  
...


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