1- هرگز فایل های ضمیمه شده رو با پسوند inc. ذخیره نکنید! یعنی name.class.inc رو به name.class.php تغییر بدید. و یا از .HTAccess برای سطح دسترسی inc. استفاده کنید. ۲- حتاًالمکان تگ های اضافی و فضا های خالی را حذف کنید و از باز و بسته کردن بیش از حد تگهای سرور (<?php ?> <? ?> <?= ?>) خودداری کنید. در عمل تفاوتی ندارند ولی در حجم و سرعت، به ازای هر ۱ کاراکتر اضافی ۱ بایت حجم فایل و صفحه و Loading میبره بالا(مخصوصاً در پروژه های سنگین)! ۳-کلاس های خود را با قرار دادن ; کامل ببندید و کلاس را با Final و Initialize/__construct شروع کنید تا Clone نشوند: کد PHP: <code style="white-space: nowrap;"> <code> final class Name ** final public function __construct() ** #… } }; </code> </code> 4- برای Escape کردن کاراکترهای ویژه و جلوگیری از خیلی از حملات SQL از دستورات زیر استفاده کنید: کد PHP: <code style="white-space: nowrap;"> <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); </code> </code> 5-در کلاس خود از تابع پیش فرض clone__ برای جلوگیری از تقلید(Clone)(شبیه سازی) توابع استفاده کنید: کد PHP: <code style="white-space: nowrap;"> <code> final public function __clone() ** return(@exit(‘Cloning is not allowed.’)); } </code> </code> 6-هرگز از Cookie/Session برای ذخیره کلمه رمز یا مقادیر نمایشی استفاده نکنید(قابل تغییر هستند). خیلی ها از جمله … این مورد رو در نرم افزارشون رعایت نمی کنند و بارها آسیب های جدی و پیش پا افتاده ای رو متحمل میشن. ۷-در خط اول هر فایل PHP، بعد از خطا زدایی کامل صفحه، دستور (error_reporting(E_ALL@ را قرار بدید که تمامی خطا ها و هشدار ها رو نمایش بده. تا از سو استفاده های احتمالی جلوگیری بشه. ۸-حتاًامکان از دستور GET_$ برای دریافت مقادیر استفاده نکنید. و به جاش از دستور REQUEST_$ استفاده کنید(مقدارش رو هم ***** کنید). مقادیر متد GET_$، براحتی قابل Sniff و Steal هستند. همچنین ظرفیت این متد حداکثر ۱۰۰ کاراکتر هستش و تمام پارامترهای URL رو هم نوار آدرس مرورگر در معرض دید میزاره. ولی متد REQUEST_$، هیچ کدوم از این ضعف ها رو نداره و قدرت پیمایشش هم بیشتره. اینم یه مثال ساده برای معتبر سازیش: کد PHP: <code style="white-space: nowrap;"> <code> $Int_Identity= (int)@preg_replace(‘/[^0-9]/i’, ”, $_REQUEST['Id']); </code> </code> 9- حتماً تمامی دستورات Exit و Die رو با Ignore کردن خطا @ و بستن محتوا استفاده کنید: کد PHP: <code style="white-space: nowrap;"> <code> @exit(”); یا @die(”); </code> </code> 10- در اول هر کلاس و تابع حتماً وجود و بودن کلاس و تابع رو چک کنید! کد PHP: <code style="white-space: nowrap;"> <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; </code></code>