miladanimator
یک شنبه 21 آذر 1389, 00:02 صبح
با سلام
در مورد معتبر سازی داده های php ، و جلوگیری از sql injection و ... ، چند سوال دارم که ممنون میشم جواب داده بشه .
خیلی سرچ کردم و در این باره بحث های زیادی خوندم . حالا می خوام ببینم عملیات زیر کافیست یا خیر ؟
1- اول از همه اینکه آیا داده هایی که با md5 یا sha1 کد می کنیم ، نیازی هست قبل از کد کردن ، اعتبار سنجی شوند ؟ یا خیر ؟
2- برای امنیت داده های عددی ، استفاده از تابع int کافیست ؟ مثال : $a=(int)($_POST['adad'])
3- بهتر است از int استفاده کنیم یا از intval؟
برای معتبر سازی کلی داده ها ، از تابع زیر استفاده می کنم . آیا کفایت می کند ؟ یا کمکی می تونید در جهت بهبود و کامل تر شدن این تابع کنید ؟
function sec( $value )
{
$magic_quotes_active = get_magic_quotes_gpc();
$new_enough_php = function_exists("mysql_real_escape_string"); // i.e. PHP >= v4.3.0
if ($new_enough_php)
{ // PHP v4.3.0 or higher
// undo any magic quote effects so mysql_real_escape_string can do the work
if ($magic_quotes_active)
{
$value = stripslashes($value);
}
$value = mysql_real_escape_string($value);
} else
{ // before PHP v4.3.0
// if magic quotes aren't already on then add slashes manually
if (!$magic_quotes_active)
{
$value = addslashes($value);
}
// if magic quotes are active, then the slashes already exist
}
$value = htmlentities($value ,ENT_QUOTES,'UTF-8');
return $value ;
}
4. و اما یک مشگل هم دارم . زمانی که بوسیله تابع فوق ، محتوای یک textarea که کاربر وارد کرده و با دکمه اینتر در بین داده ورودی ، به خط های بعدی رفته ، می گیرم ، به جای خط بعد در داده ورودی ، \r\n ذخیره می شود و باز هنگام نمایش اطلاعات از دیتابیس و فیلتر اطلاعات به وسیله تابع فوق ، این مشکل باقیست .
5. و سوال آخر اینکه برای امنیت و سرعت بیشتر ، استفاده از موارد فوق بهتر است و یا استفاده از توابع filter_var و اینکه آیا توابع filter_var برای جلوگیری از حملات sql injection , xss , … کفایت می کند ؟
در مورد معتبر سازی داده های php ، و جلوگیری از sql injection و ... ، چند سوال دارم که ممنون میشم جواب داده بشه .
خیلی سرچ کردم و در این باره بحث های زیادی خوندم . حالا می خوام ببینم عملیات زیر کافیست یا خیر ؟
1- اول از همه اینکه آیا داده هایی که با md5 یا sha1 کد می کنیم ، نیازی هست قبل از کد کردن ، اعتبار سنجی شوند ؟ یا خیر ؟
2- برای امنیت داده های عددی ، استفاده از تابع int کافیست ؟ مثال : $a=(int)($_POST['adad'])
3- بهتر است از int استفاده کنیم یا از intval؟
برای معتبر سازی کلی داده ها ، از تابع زیر استفاده می کنم . آیا کفایت می کند ؟ یا کمکی می تونید در جهت بهبود و کامل تر شدن این تابع کنید ؟
function sec( $value )
{
$magic_quotes_active = get_magic_quotes_gpc();
$new_enough_php = function_exists("mysql_real_escape_string"); // i.e. PHP >= v4.3.0
if ($new_enough_php)
{ // PHP v4.3.0 or higher
// undo any magic quote effects so mysql_real_escape_string can do the work
if ($magic_quotes_active)
{
$value = stripslashes($value);
}
$value = mysql_real_escape_string($value);
} else
{ // before PHP v4.3.0
// if magic quotes aren't already on then add slashes manually
if (!$magic_quotes_active)
{
$value = addslashes($value);
}
// if magic quotes are active, then the slashes already exist
}
$value = htmlentities($value ,ENT_QUOTES,'UTF-8');
return $value ;
}
4. و اما یک مشگل هم دارم . زمانی که بوسیله تابع فوق ، محتوای یک textarea که کاربر وارد کرده و با دکمه اینتر در بین داده ورودی ، به خط های بعدی رفته ، می گیرم ، به جای خط بعد در داده ورودی ، \r\n ذخیره می شود و باز هنگام نمایش اطلاعات از دیتابیس و فیلتر اطلاعات به وسیله تابع فوق ، این مشکل باقیست .
5. و سوال آخر اینکه برای امنیت و سرعت بیشتر ، استفاده از موارد فوق بهتر است و یا استفاده از توابع filter_var و اینکه آیا توابع filter_var برای جلوگیری از حملات sql injection , xss , … کفایت می کند ؟