به این سادگی هم نیست. به طور کلی بهتر هست که متغیر های ورودی از $_GET , $_POST را همیشه sanitize کنیم با ***** های مختلف. دیگه بستگی به منطق برنامه نویسی داره.
اینجا سه مثال از این روند زده که به طور ساده توضیح می دم:
مثال. برنامه ی پی اچ پی ما از ورودی GET یا POST یک ورودی را می خواند و سپس در رابطه با آن ورودی کاری را انجام می دهد. همانطوری که این توضیحی که لینک کردم هم اشاره می کند بهترین کار ***** کردن و sanitize (فارسی ش رو نمی دونم پاکسازی احتمالا یا عفونت زدایی!) در محل استفاده هست. سه سناریو:
$safe_category_name = escapeshellargs($unsafe_category_name);
exec("external_binary -category_name '$safe_category_name'");
در اینجا کد نام یک فولدر یا چیزی شبیه اون هست که به یک برنامهی خارجی خرونده شده. در اینجا چون چیزی رو در شل اجرا کردیم با استفاده از دستور escapeshellargs مطمئن می شیم که چیز بدی به ترمینال پی اچ پی نمی ره!
$safe_category_name = mysql_real_escape_string ($unsafe_category_name);
mysql_query("SELECT * FROM items WHERE category_name = '$safe_category_name'");
در این حالت که عمومیت بیشتری داره چیزی رو از پایگاه داده فرا خوندیم. این جا هم با mysql_real_escape_string مطمئن میشیم که کسی چیز تاجوری رو به کوئری وارد نمی کنه! SQL Injection
$safe_category_name = htmlspecialchars($unsafe_category_name);
echo "<span>$safe_category_name</span>";
در این حالت با استفاده از اون متغیر چیزی رو به مرورگر فرستادیم. چرا این ممکنه خطرناک باشه؟ XSS ! برای اینکه ممکنه ما همین رو یه روزی به دیتابیس بفرستیم و برای کاربری «دیگری» فراخونی کنیم! سپس کد مخرب از طریق سرور ما روی کامپیوتر طرف اجرا می شه از طریق javascript! دنگ!
و به طور کلی همونطور که همیشه رعایت می کنیم: magic_gpc = off همیشه و استفاده نمی کنیم از eval یا include uploaded file