سلام.
من یه تکه کد دارم که از بس دوسش دارم واقعا زورم اومد بنویسم و میخواستم صفحه رو ببندم.اما یه دوستی الآن بهم گفت تو یادادان بخیل نباش!!
من تو زمینه ی امنیت خیلی ماهر نیستم اما همون یکم تجربه ی درویشی ام بهم میگه این کد خوبه:
$note=filter_var(trim(stripslashes(htmlspecialchar s($_POST['note']))), FILTER_SANITIZE_STRING);
در واقع کاری که این کد می کنه اینه که هرچه کاربر وارد کرد را دقیقا همون جوری نشونت میده.
یعنی مثلا حتی اگه کد های اچ تی ام ال،پی اچ پی جاوا اسکریپت و.... وارد کرد ، قشنگ همونجوری نشونت میده.من خودم خیلی ازش راضی ام.اما همون طور که گفتم شاید نکات امنیتی هم باشه که من بلد نباشم.
بعد ازاینکه ورودی از فیلتر بالا عبور کرد،یه نکته می مونه.این هم اینکه اینتر ها در زبان اچ تی ام ال باید حتما بصورت <br/> باشن تا نمایش داده بشن.
پس دستور زیر رو هم باید اضافه کنی.
$search = array ("\r\n");
$replace = array ("\n<br/>");
$note = str_replace($search, $replace, $note);
هم بریک می خوره وهم اینتر(اینتر در مرورگر نشون داده نمی شه،اما وقتی می خوای سورس صفحه رو بخونی خیلی تمیز تر میشه.)
تا اینجا برای این بود که متغیر را تمیز بگیری ونشون بدی.
*************
اگر میخوای این متن رو در دیتابیس ذخیره کنی،قبل از اینکه وارد دیتابیس بشه باید دوباره از یه فیلتر دیگه رد کنه که برای دیتابیس هم خطرناک نباشه.
$note=mysql_real_escape_string($note);
البته اینجوری ممکنه(شاید) یکم اسلش به متن اضافه کنه.
که من چون خودم احتیاج به دیتابیس نداشتم از این کد آخری استفاده نکردم.
فکر می کنم برای اینکه مشکل اسلش ها هم حل بشه،بعد از اینکه دوباره از دیتابیس اون ها رو خوندی باید کد زیر رو استفاده کنی.
$note=stripslashes($note);
من خودم تا حالا این کد هارا برای دیتا بیس تست نکردم.نمی دونم روش هایی که براش گفتم چه اتفاقی می افته ویا از امنیت کم می شه یانه.
شاید هم اصلا برای وارد کردن ورودی به دیتابیس، با وجود فیلتر های قبلی نیازی به این کد نباشه.به هر حال هرچه می دونستم گفتم.بایه نفر دیگه درباره ی این قسمت دوم صحبت کن.
موفق باشید.