سلام استاد عزیز . آیا نیاز هست ما داده های کاربر رو چک کنیم که حتما واقعی باشه یا دیگه به چک کردن نیازی نیست وقتی کد زیر رو میزنید . منظورم اینه که برای امن بودن داده ها همین کد کافیه یا نیاز به انجام کاری است ؟؟
$name = $userdata['username'];
$email = $userdata['email'];
$pass_hash = password_hash($userdata['password'] , PASSWORD_BCRYPT);
$sql = "INSERT INTO users (name,email,password) VALUES (:name,:email,:pass)";
$stmt = $pdo -> prepare($sql);
$stmt -> execute([
':name' => $name,
':email' => $email,
':pass' => $pass_hash
]);
اگر کاربر کد اسکریپتی بزنه خود این کد امن است یا نه؟؟؟ یا از داده های نامعتبر استفاده کنه ؟؟ نیاز هست که حتما چک بشه نام رشته باشه یا ایمیل حتما رشته باشه ؟؟؟
درود
اصل باید این باشه که داده های کاربر به طور پیش فرض نا امنن، ینی اینکه شما هر چیزی که سمتتون اومد رو باید validate کنید تا خیالتون راحت باشه که داده ها بهتون آسیب نمیزنه، حالا این پروژه برای تمرینه و بستگی به خودتونه که روی این موضوع بهش حساسی نشون بدین یا ن
میتونید برای تمرینشون این مورد رو با sanitizationهای php پیاده سازی کنید، متدهاش داخل لینک زیر هستن
راه های مختلفی برای نفوذ وجود نداره این مقاله رو حتما بخونید https://7learn.com/programming/php/php-security-tutorial
برای رشته های شما میتونید مثلا از تابع htmlspecialchars استفاده کنید تا کاراکترهای خطرناک رو حذف کنه