PDA

View Full Version : سوال: کمک کلی در مورد امنیت php



amir6268
دوشنبه 20 مرداد 1393, 01:03 صبح
سلام
من با یه روشی برای کدنویسی با php دارم میرم جلو و تمام امکانات توسط همون روش درست میکنم حالا نمیدونم واقعا از نظر امنیت درسته یا نه ...
ببینید مثلا یه امکان لایک من میخوام درست کنم اول توسط جاوا اسکریپت و به صورت آژاکس اونو به صفحه like.php میفرستم ...
صفحه like.php فقط دارای کدهای insert یا update پست ها هست ... با یه سری دستورات if و else که اطلاعاتی که ارسال میشه رو چک کنه که درست باشه و اشتباه ثبت نشه ...

حالا این روش مشکل امنیتی ایجاد نمیکنه؟ مثلا به اطلاعات دیتابیس کسی دسترسی پیدا کنه یا یه باگ امنیتی داشته باشه و ...

kingwolf11
دوشنبه 20 مرداد 1393, 01:11 صبح
با سلام . دوست عزیز بنده این نکته رو در یک تاپیک دیگه عرض کردم که باگ ها تنها باگ هایی نیستن که باعث هک شدن بشن . بلکه میتونن شمارو ضایع کنن . بهتره هر جوری که شده از کاربر محافظت کنید که بدون کلیک بر روی دکمه ای به یک فایل اکشن دسترس نداشته باشه !
سعی کنید در متد های گت از عدد استفاده کنید و اونو intval کنید .
اگر از mysql استفاده میکنید کد های زیر برای امنیت input ها مناسب هست :



function Check_Post($input){
$result1= mysql_real_escape_string($input);
$result2= htmlspecialchars($result1);
return $result2;
}

کد های زیر برای PDO مناسب هستن ولی برای mysql هم میتونید اضافه کنید (برای اطمینان 100 درصدی):


<?php

function Check_Post($input){
$result1= htmlspecialchars($input);
$result2= strip_tags($result1);
$result3= addslashes($result2);
return $result3;
}


?>

amir6268
دوشنبه 20 مرداد 1393, 01:26 صبح
ممنون ولی چطوری به عدد تبدیل کنم در متد Get؟ بیشتر توضیح میدید با مثال؟

amir6268
دوشنبه 20 مرداد 1393, 01:27 صبح
با سلام . دوست عزیز بنده این نکته رو در یک تاپیک دیگه عرض کردم که باگ ها تنها باگ هایی نیستن که باعث هک شدن بشن . بلکه میتونن شمارو ضایع کنن . بهتره هر جوری که شده از کاربر محافظت کنید که بدون کلیک بر روی دکمه ای به یک فایل اکشن دسترس نداشته باشه !
سعی کنید در متد های گت از عدد استفاده کنید و اونو intval کنید .
اگر از mysql استفاده میکنید کد های زیر برای امنیت input ها مناسب هست :



function Check_Post($input){
$result1= mysql_real_escape_string($input);
$result2= htmlspecialchars($result1);
return $result2;
}

کد های زیر برای PDO مناسب هستن ولی برای mysql هم میتونید اضافه کنید (برای اطمینان 100 درصدی):


<?php

function Check_Post($input){
$result1= htmlspecialchars($input);
$result2= strip_tags($result1);
$result3= addslashes($result2);
return $result3;
}


?>


فقط این کدهارو اضافه کنم به صفحه؟ لازم نیست آی دی وارد کنم در اینپوت؟

kingwolf11
دوشنبه 20 مرداد 1393, 01:38 صبح
اگر امکانش هست بنده فینگلیش توضیحاته کامل بدم. مشه ؟

kingwolf11
دوشنبه 20 مرداد 1393, 01:53 صبح
bebakhshid dige man halO hosele nadashtam tozihate toolani ro ba farsi bedam :قلب:
khob dooste aziz shoma tanha kari ke bayad koni ine ke har koodoom az table hat che niaz hast ya nist daraye yek id bashe . yani bara mesal ye id ba index=>primary va auto incerement ham bashe . intori mitooni ba ye kelid tamamie etelaate yek jadvalO daryaft koni va niazi nist too parametr haye get az harf estefade koni . chon agar az horoof estefade she emkane sql injection bala mire . shoma agar tamamie parametr harO az adad estefade koni mitooni ba daryaft parametr haye khodet be soorate zir az sql injection jologiri koni :


intval($_GET['...'])

amma oon 2ta function baraye jologiri az hamalate XSS monaseban , intori har karbari nemitooni biad va ba voroode code haye js takhrib kone sitetO .tanha kari ke bayad anjam bedi ine ke az oon 2ta function estefade koni va too meghdar haye daryafti esmte input khodetO bezani . mesal :


$var=Check_Post($_POST['...']);

dar enteha bande be khatere in karam ke horoofe khodamO engilisi kardam ozr khahi mikonam :قلب:

amir6268
سه شنبه 21 مرداد 1393, 19:50 عصر
مرسی ولی یه سوال طراحی یک شبکه اجتماعی توسط روشی که اون بالا گفتم درسته؟ از نظر امنیتیش رو میگم ...

kingwolf11
سه شنبه 21 مرداد 1393, 22:22 عصر
بله مشکلی نداره تا جایی که من میدونم . شبکه اجتماعی هم بالاخره یه سیستمی هستش مثل بقیه ی سیستم ها !