سلام
فکر کنم استفاده از mysql و mysqli خطرsqlInjection رو در پیش داشته باشه درسته ؟
PDO بهتر از بقیه است ؟
Printable View
سلام
فکر کنم استفاده از mysql و mysqli خطرsqlInjection رو در پیش داشته باشه درسته ؟
PDO بهتر از بقیه است ؟
سلام. مسلما PDO قدرتمندتر و برتر از MySQLi است که در این مورد هم مقالاتی در نت هست.
در PDO میتوان بجای escape string از متد quote استفاده کرد اما PDO و MySQLi مفهوم بهتری به نام «پارامتری کردن» را معرفی کردهاند که امنیت آن بالاتر و خیال شما هم آسودهتر میشود. مثلا شما به PDO میگویید که کوئری من این است:
SELECT * FROM `news` WHERE `category`=? AND `language`=?
دو پارامتر زبان و دسته را به صورت جداگانه به آن میدهید. لذا PDO خودش میداند که با آن متغیرها چه کند که با کوئری تداخلی ایجاد نشود که منجر به اینجکشن شود.
زمانی که صحبت از PDO یا MySQLi یا escape string میکنیم، منظورمان حفاظت بانک در برابر اینجکشن است که همینها کافی است و تابع strip tag ربطی به این موضوع (حملات اینجکشن) ندارد و مربوط به بحث دیگری به نام حملات xss است که قبل از چاپ (بعد از اجرای کوئری و گرفتن نتیجه آن) باید به آن پرداخت و گفتیم که htmlpurifier بهترین روش برای پاکسازی html ارسال شونده به براوزر کاربر از نظر حملات xss (دزدیدن کوکی و ...) است.
موفق باشید.
سلام . مسلما بهتر است. البته از PDO بیشتر برای ایجاد ارتباط با بانکهای اطلاعاتی مختلف با کوچکترین تغییر استفاده می کنند ( البته تا اونجایی که بنده اطلاع دارم ) . برای جلو گیری از SQL Injectionبهتره از Store Procedureاستفاده کنید. موفق باشید.
اینم بخونین بدک نیست: http://net.tutsplus.com/tutorials/ph...hould-you-use/