1- حتاًالمکان از تگ ?> به جای php?> استفاده کنید. در عمل تفاوتی ندارند ولی در حجم، به ازای هر 3 کاراکتر اضافی 3 بایت حجم فایل و صفحه میبره بالا(مخصوصاً در پروژه های سنگین)!
2- هرگز فایل های ضمیمه شده رو با پسوند inc. ذخیره نکنید! یعنی name.class.inc رو به name.class.php تغییر بدید.
3- کلاس های خود را با قرار دادن ; کامل ببندید(نقطه ویرگول) و کلاس را با Initialize یا construct__ شروع کنید:
class Name
{
};
4- برای رد(Escape) کردن کاراکترهای ویژه و جلوگیری از حملات SQL از دستورات زیر استفاده کنید:
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(...);
else: @mysql_escape_string(...);
endif;
5- در کلاس خود از تابع پیش فرض Clone__ برای جلوگیری از تقلید(Clone)(شبیه سازی) توابع استفاده کنید.
یعنی:
final public function __clone()
{
return(@exit('Cloning is not allowed.'));
}
6- هرگز از Cookie و Session برای ذخیره کلمه رمز یا مقادیر نمایشی استفاده نکنید(قابل دستکاری هستند)!
7- در خط اول هر فایل PHP، دستور (error_reporting(E_ALL@ را قرار بدید که تمامی خطا ها و هشدار ها رو نمایش بده. تا از سو استفاده های احتمالی جلوگیری بشه.
8- حتاًامکان از دستور Get_$ استفاده نکنید. و به جاش از دستور Post_$ یا Request_$ استفاده کنید.
9- حتماً تمامی دستورات Exit و Die رو با رد کردن خطا و بستن محتوا استفاده کنید.
مثلاً:
@exit(''); یا @die('');
10- در اول هر کلاس و تابع حتماً وجود و بودن کلاس و تابع رو چک کنید!
مثلاً:
if(!extension_loaded('standard')): @exit('Extension Standard not loaded!');
endif;
if(!extension_loaded('mysql')): @exit('Extension MySQL not loaded!');
endif;
if(!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;
$_Server['PHP_Self'] معتبر سازی
11- هرگز از روش زیر برای آدرس دهی(Action) استفاده نکنید:
<form name="Frm_Test" action="<?= $_Server['PHP_Self'] ?>" method="post" target="_self">
...
</form>
چراکه کاربر خرابکار(Hacker) میتونه به راحتی فرم رو برای حملات (XSS(Cross Side Scripting دستکاری کنه و تغییر بده.
راه حل:
$_PHPSelf= @basename(__File__);
$_Server['PHP_Self]= @substr($_Server['PHP_Self'], 0, @strpos($_Server['PHP_Self], $_PHPSelf)) . $_PHPSelf;
ایمن سازی کلمات رمز
12- برای ایمن سازی کلمات رمز در هنگام ثبت نام(عضویت) یا ورود کاربر، حتماً یکی از الگوهای رمز گذاری(Hash) را استفاده کنید:
مثال:
$_Str_Password= $_Post['InpTxt_Password'];
$_Str_SecurePassword= md5($_Str_Password); یا $_Str_SecurePassword= sha1($_Str_Password);
ایمن سازی شرط و شروط ها
13- بهتر و ایمن تره اگر تمامی تگ ها و بلاک هارو کامل مشخص کنید و کامل ببندید:
if(...): ...
endif;
if(...): ...
else(...): ...
endif;
if(...): ...
elseif(...): ...
else(...): ...
endif;
if(...)
{
...
};
if(...): ...
{
...
}
else
{
...
};
while(...):
endwhile;
while(...)
{
};
for...
foreach...
...
خروجی ها و انعکاس ها
14- بهتر و ایمن تره که به جای:
echo 'Test ' . $_Test;
و
return 'Test ' . $_Test;
و
<?php echo 'Test ' . $_Test; ?>
این را جایگزین کنید:
echo((string)'Test ' . $_Test);
و
return((string)'Test ' . $_Test);
و
<?= 'Test ' . $_Test ?>
منبع: یوشا آل ایوب [ جهت مشاهده لينك عضو شويد ! ]
موفق باشید.