در مورد بحث امنیت هست.
اگر داده ها را به صورت خام و همونطور که از کاربر گرفتید بذارید توی کوئری هاتون ، مشکل امنیتی براتون پیدا میشه.
به این نوع مشکل SQL Injection یا تزریق sql میگن.
اگر کاربر ورودی نا معتبری بده میتونه کوئری شما را تغییر بده و سوء استفاده کنه.
نمونه :
الان کوئری شما این هست:
" SELECT * FROM user where id='$username' "
اگر کاربر نام کاربری را مثلا amir وارد کنه کوئری شما به شکل زیر میشه:
" SELECT * FROM user where id='amir' "
حالا اگر نام کاربری را به شکل زیر وارد کنه ببینید کوئری شما چه شکلی میشه:
نام کاربری :
amir' or 1=1 --
کوئری:
" SELECT * FROM user where id='amir' or 1=1 --' "
با این کار تمامی رکوردها انتخاب میشن و دیگه کاری به نام کاربری نداره.
حالا کافیه یوزر را به شکل بالا وارد کنه و پسوورد را مثلا 123456 ، اگر یک کاربری بود که پسووردش را ساده گذاشته بود به راحتی انتخاب میشه و طرف با نام کاربری اون وارد سایت شما میشه.
این یک نمونه ساده بود. میشه دستورات بیشتری هم به کوئری شما تزریق کرد.
حالا اون تابعی که دوستمون معرفی کردند میاد و کاراکتر هایی مثل ' یا " را از متغیر یوزر نیم تغییر میده تا اگر کاربری رشته مشکل داری برای تزریق به دیتا بیس شما وارد کرد نادیده گرفته بشه و مشکلی برای کوئری شما پیش نیاد.
امیدوارم تونسته باشم به خوبی مفهومش را بیان کنم.