سلام خسته باشید برای کنترل ورودی کاربر تابع ()Htmlspecialchars کافی هست؟
میشه روش های معرفی کنید که بشه به ورودی های کاربر اعتماد کرد؟
و سئوال دومم اینه که وبسایت برای کاربران پنل جدا در نظر گرفته که میتونن مثلا مطالبی ارسال کنند
وقتی همچین آدرسی وارد میشه
site.ir/wp-admin/post/delete/1 مطلب توسط ادمین باید حذف بشه
خب من اومدم یک کلاس کلی برای کنترل سشن ها و دسترسی نوشتم که امنیت و کارایی کلاس بالاست
و اومدم اون رو تو __counstructor کنترولر مطالب گذاشتم و متدهارو اونجا صدا زدم که کاربر دسترسی و سشنش چک میشه
خودم فکرمیکنم امنیتش خیلی پایینه که اینطور عمل کردم آیا واقعا اینطوره؟
سلام
@paressep28
خواهش میکنم انشالا که مفید باشه!
تو counstructor نزارید به نظرم بهتر هست!
برای موارد ولیدیشی متد جدا در نظر بگیرید
همه چیز رو partial کنید ، جدا جدا
تو یه جا همه رو قرار ندید که دستتون بعدا برای توسعه باز باشه!
بعدا خواستید یه کاری کنید به فرض به این ولیدیتشن نیازی نداشتید ، حالا تو counstructor هست ...! کلی متد ها وابسته شه !! میتونید کاریش کنید نه!
پس جدا کنید همه رو .
به نظرم به صورت trait تعریف کنید ، هر جا تو ر کلاسی نیاز داشتید از اون trait استفاده کنید
سلام
@paressep28
برای چک کردن ورودی های کاربر خیلی کارا میشه کرد و خیلی (filterha) ها میشه قرار داد
یه نمونه براتون میزارم
function db_safe($safe_data) {
$safe_data = strip_tags($safe_data);
$safe_data = htmlentities($safe_data, ENT_COMPAT, 'UTF-8');
$safe_data = stripslashes($safe_data);
$safe_data = htmlspecialchars($safe_data);
$safe_data = str_replace("\\","",$safe_data);
$safe_data = str_replace("%","",$safe_data);
$safe_data = str_replace("$","",$safe_data);
$safe_data = str_replace("#","",$safe_data);
$safe_data = str_replace("^","",$safe_data);
$safe_data = str_replace("~","",$safe_data);
$safe_data = str_replace("etc","",$safe_data);
$safe_data = str_replace("passwd","",$safe_data);
$safe_data = str_replace("<script>","",$safe_data);
$safe_data = str_replace("<div>","",$safe_data);
$safe_data = str_replace("while","w h i l e",$safe_data);
return $safe_data;
و راجب سوال دوم
شما باید سشن کاربر ، دسترسی کاربر رو برای هر عملی چک کنید
و اینکه نوع متد های ارسالی رو هم چک کنید
من این لینک شما رو
site.ir/wp-admin/post/delete/1
تو آدرس بار بزنم باید حذف شه؟ خیر
اگه حذف شه اشتباهه!!!!!!!
چون متدم GET هست
شما قبلش شرط بزارید اگر سشن اوکی بود ، اگر دسترسی اوکی بود ، اگر متد POST بود ، اگر هوا خوب بود ، اگر طرف دستش به موس بود
و ...
بعد بیا پاک کن
به همین سادگی نگیرید
کمی شروط بزارید قبلش که چک بشه
این موارد توی فریم ورکا خیلی راحت و خوب پیاده سازی میشه
جلوگیری از حملات CSRF و این موارد که چک کنه هر سندی هر بار که ارسال میشه اطلاعاتش ، همون بار ولیدیت شده هست 100 بار دیگه هم که بزنه 100 بار نباید اون پست حذف شه!
این موارد رو توی کد ها میتونید با گذاشتن شروط متفاوت هندل کنید
@Alimotreb
خیلی ممنونم از شما .آقا واقعا عالی جواب میدین و خیلی لذت میبرم:)
تو سئوال۲ من تمام چیزها حتی هوا رو چک میکنم و اونارو تو یه متد میزارم واونا رو تو counstructor اون کلاسی که قراره عملیات انجام بشه فرامیخونم از این لحاظ ضعفی نیست؟
سلام
@paressep28
خواهش میکنم انشالا که مفید باشه!
تو counstructor نزارید به نظرم بهتر هست!
برای موارد ولیدیشی متد جدا در نظر بگیرید
همه چیز رو partial کنید ، جدا جدا
تو یه جا همه رو قرار ندید که دستتون بعدا برای توسعه باز باشه!
بعدا خواستید یه کاری کنید به فرض به این ولیدیتشن نیازی نداشتید ، حالا تو counstructor هست ...! کلی متد ها وابسته شه !! میتونید کاریش کنید نه!
پس جدا کنید همه رو .
به نظرم به صورت trait تعریف کنید ، هر جا تو ر کلاسی نیاز داشتید از اون trait استفاده کنید
@Alimotreb
اقا سلامی مجدد ببخشید
من چنین url هایی دارم
site.ir/post/{titile}
و سئوال دوم من چنین url دارم
site.ir/post/
آیا این میتونه مورد حمله sql injection قرار بگیره؟
من طوری تعریف کردم اگر =site/post?pt جلوش قرار گرفت بی تفاوت عمل کنه
سلام
@paressep28
توی معماری MVC ولیدیشن بهتره توی متد قرار بگیره !
SQL Injection به خیلی چیزا بستگی داره
به اینکه شما چطوری به پایگاه داده وصل شدی اصلا
mysql
mysqli
pdo
به این که آیا bindparam میکنید یا نه
یا از صافی رد میکنید یا نه
به این که آیا چیزای مخرب رو از توی کوئری ها در میارید یا نه...!
سلام
@paressep28
اگر از دیتا مطمئنید نه دیگه...
ولی زدنشم خالی از لطف نیست
هم صافی بزارید ، هم فیلتر بزارید
هم توری بزارید
فنس بکشید...!
:-)
چون مهمه واقعا! همه جوره دیتا باید امن باشه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟