PDA

View Full Version : sql Injection و textarea



setare_kz
شنبه 26 اردیبهشت 1388, 10:17 صبح
در مورد sql Injection و input type="text" مطلب زیاده ولی اگه فیلدی به صورت textarea یا editor داشته باشیم که تگ اچ تی ام ال داخل اون قرار می گیره چه کار باید کرد؟
آیا برای این هم راه حلی وجود داره؟ آخه داخل تگ اچ تی ام ال هم ' " وجود داره که قابل جایگذاری نیستند .

ممنون می شم بهم جواب بدین.

yaqubian
شنبه 26 اردیبهشت 1388, 14:05 عصر
دوست عزیز
من قبلا یه کلاس واسه اینکار گذاشتم. اگه جستجو کنید پیداش می کنید.
موفق باشید

roya2002_80
پنج شنبه 31 اردیبهشت 1388, 11:26 صبح
من نتونستم کلاسی که میگید را پیدا کنم ، اگه ممکنه دوباره این کلاسی که می گید رو برام بذارید، ممنونم

امیـرحسین
پنج شنبه 31 اردیبهشت 1388, 13:06 عصر
از تابع htmlspecialchars (http://ir.php.net/manual/en/function.htmlspecialchars.php) استفاده کنید. این تابع هم کوتیشن ها رو تغییر میده و هم علامات < و > ......

roya2002_80
پنج شنبه 31 اردیبهشت 1388, 13:22 عصر
من از این تابع هم استفاده کردم ولی عین کدهای تغییر یافته شده را نشون می ده و چیدمان متن اصلی از بین می ره!

امیـرحسین
پنج شنبه 31 اردیبهشت 1388, 13:34 عصر
حتما یه چیزی رو جا انداختید وگرنه امکان نداره همچین چیزی!
عین کد رو تو صفحه نشون میده و وقتی کد HTML تو صفحه چاپ شه یعنی دیگه HTML نیست که بخواد عمل کنه!

roya2002_80
پنج شنبه 31 اردیبهشت 1388, 14:13 عصر
من کد زیر را به تابع htmlspecialchars دادم

<P> <TABLE border=1> <TBODY> <TR> <TD><A href="www.google.com">www.google.com</A></TD></TR></TBODY></TABLE></P>

و خروجی ای که در صفحه به من داده خطوط زیر است

&lt;P&gt; &lt;TABLE border=1&gt; &lt;TBODY&gt; &lt;TR&gt; &lt;TD&gt;&lt;A href="www.google.com"&gt;www.google.com&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
یعنی عین کدهای بالا در صفحه چاپ می شه!

امیـرحسین
پنج شنبه 31 اردیبهشت 1388, 15:51 عصر
آهان من فکر کردم میخوایدHTML رو هم بی اثر کنید....
شما برای sql injection با کوتیشن و دابل کوتیشن مشکل دارید دیگه درسته؟
خب وقتی اطلاعات فرم رو گرفتید، در این تابع قرار بدید به این صورت:

$textarea = htmlspecialchars($_POST['textarea'] , ENT_QUOTES);

و وقتی میخواید اطلاعات رو چاپ کنید، به این شکل عمل کنید:

$textarea = $db_row['textarea'];

echo htmlspecialchars_decode($textarea , ENT_QUOTES); // for PHP 5
echo html_entity_decode($textarea , ENT_QUOTES); // for PHP 4