PDA

View Full Version : حذف sql command از ورودي براي مبارزه با sql injection



Vahid Faraji
جمعه 05 شهریور 1389, 15:19 عصر
strip_tags:
كارش حذف تگ هاي html از ورودي كاربر هست. مي خوام بدونم آيا تابعي در php داريم كه sql command ها رو حذف كنه مثلا اگه تو ورودي داشته باشيم union يا alter، تابعي هست اينا رو حذف كنه؟

SAMAN_PHP
جمعه 05 شهریور 1389, 15:37 عصر
اقا چرا بیخودی تاپیک میزنید؟خوب این سوال هارو توی یه تاپیک بپرسید.

Vahid Faraji
جمعه 05 شهریور 1389, 15:46 عصر
اقا چرا بیخودی تاپیک میزنید؟خوب این سوال هارو توی یه تاپیک بپرسید.

فكر كنم يه جور ديگه هم مي شه راهنمايي كرد.
اگر دين نداريد، لااقل آزاده باشيد.

Vahid Faraji
جمعه 05 شهریور 1389, 16:26 عصر
فک کردید فقط شما مشکل دارید.شما با این کارتون تاپیک دیگر بچه هارو پایین میفرستید
وبیشتر بچه های که اینجا راهنمایی میکنن فقط صفحه اول رو میبینن.اینطوری دیگه اونایی که تاپیکشون به صفحه دوم میره دیر به جواب میرسن.


به شما بیشتر میاد

اگر من صادقانه بگم من سهوا اين كار رو كردم، شما همچنان رو حرف خودتون اصرار داريد؟!!



شما با این کارتون تاپیک دیگر بچه هارو پایین میفرستید
وبیشتر بچه های که اینجا راهنمایی میکنن فقط صفحه اول رو میبینن.اینطوری دیگه اونایی که تاپیکشون به صفحه دوم میره دیر به جواب میرسن.

از اول خيلي دوستانه همينو مي گفتين.

به هر حال من به سهم خودم عذر مي خوام. موفق باشيد. هدف اينه مشكلات حل شه.

binyaft
جمعه 05 شهریور 1389, 16:36 عصر
اقا خودت یه تابع بساز که این چیز ها رو با str_replace حذف کنه
یه تاپیک هم در این مورد بود تو انجمن

Vahid Faraji
جمعه 05 شهریور 1389, 16:42 عصر
اقا خودت یه تابع بساز که این چیز ها رو با str_replace حذف کنه
یه تاپیک هم در این مورد بود تو انجمن

شما درست مي گيد، اوني كه شما مي گيدو من ديدم، ولي گفتم اگه مثل strip_tags باشه خيلي بهتره چون اين جوري هيچ كدوم از sqlcommand ها از دستمون در نمي ره يا اگه بعد ها هم command ي اضافه بشه، مشكلي پيش نمي آد.
بازم ممنون.

SAMAN_PHP
جمعه 05 شهریور 1389, 16:54 عصر
از اول خيلي دوستانه همينو مي گفتين.
شما بد متوجه شدین .من لحن بدی نداشتم فقط یه تذکر دادم


به هر حال من به سهم خودم عذر مي خوام
منم همینطور


مثلا اگه تو ورودي داشته باشيم union يا alter، تابعي هست اينا رو حذف كنه؟
اینی که اقا رضا توی این پست (http://forum.majidonline.com/showpost.php?p=1004661&postcount=13) معرفی کردن خوبه دیگه

shahriyar3
جمعه 05 شهریور 1389, 17:44 عصر
mysql_real_escape_string() اين تابع خيلي كاربرد داره براي جلوگيري از sql injection

binyaft
جمعه 05 شهریور 1389, 17:47 عصر
منه هم با shahriyar3 موافقم ، به نظر من تنها همین تابع برای جلوگیری از sql injection کافیه!

Vahid Faraji
جمعه 05 شهریور 1389, 17:55 عصر
منه هم با shahriyar3 موافقم ، به نظر من تنها همین تابع برای جلوگیری از sql injection کافیه!

شما اين لينكو بررسي كن، ببينم باز هم موافقي؟
http://learnethicalhacking.wordpress.com/2010/07/30/how-to-use-sql-injection-best-online-tutorial-for-sql-injection/

binyaft
جمعه 05 شهریور 1389, 18:05 عصر
نمیدونم چند روزیه چرا سایت های وردپرس باز نمیشه :افسرده: ( البته برای من )

shahriyar3
جمعه 05 شهریور 1389, 18:07 عصر
شما اين لينكو بررسي كن، ببينم باز هم موافقي؟
http://learnethicalhacking.wordpress.com/2010/07/30/how-to-use-sql-injection-best-online-tutorial-for-sql-injection/

دوست عزيز
متوجه منظورتون نشدم ؟!! البته من با دوست قبلي كه گفتن كافيه موافق نيستم ول تواين لينكي هم كه شما داديد چيزي براي نقض اين تابع ننوشته بود
استفاده درست از اين تابع هنر برنامه نويسه

binyaft
جمعه 05 شهریور 1389, 18:10 عصر
ما که تا به حال ندیدیم کسی به غیر از تابع mysql_real_escape_string از چیزه دیگه ای استفاده کرده باشه
اخه من از چند نفر هم پرسیدم گفتن که همین برای sql injection کافیه

Vahid Faraji
جمعه 05 شهریور 1389, 18:10 عصر
دوست عزيز
متوجه منظورتون نشدم ؟!! البته من با دوست قبلي كه گفتن كافيه موافق نيستم ول تواين لينكي هم كه شما داديد چيزي براي نقض اين تابع ننوشته بود
استفاده درست از اين تابع هنر برنامه نويسه

نه ديگه، منظورم اين بود اين تابع كاربردش چيز ديگه اي هست. از اين تابع نمي شه براي مشكلي كه من مطرح كردم استفاده كرد يعني اين مشكل (هموني كه تو اون لينك هست استفاده از sql command ها) با اين تابع رفع نمي شه، درسته؟
--------------------

ما که تا به حال ندیدیم کسی به غیر از تابع mysql_real_escape_string از چیزه دیگه ای استفاده کرده باشه
اخه من از چند نفر هم پرسیدم گفتن که همین برای sql injection کافیه

شما اون لينكو بررسي كردي، فكر مي كني با توجه به injection ي كه انجام شده مي شه با mysql_real_escape_string رفع كرد؟

shahriyar3
جمعه 05 شهریور 1389, 18:37 عصر
نه ديگه، منظورم اين بود اين تابع كاربردش چيز ديگه اي هست. از اين تابع نمي شه براي مشكلي كه من مطرح كردم استفاده كرد يعني اين مشكل (هموني كه تو اون لينك هست استفاده از sql command ها) با اين تابع رفع نمي شه، درسته؟
--------------------


شما اون لينكو بررسي كردي، فكر مي كني با توجه به injection ي كه انجام شده مي شه با mysql_real_escape_string رفع كرد؟

دوست عزيز در هر صورت خيلي فرقي نميكنه براي جلوگيري از sql injection از اين تابع براي نشون ندادن مقادير در url هم ميتونيد از يك كلاس آماده ديگه استفاده كنيد
در حقيقت فكر ميكنم شما با تعريف اصلي sql injection مشكل داريد !!!
چه از طريق فرم مقداري ارسال بشه به sql چه از طريق url شما قبل از كد هاي كوئري كه تو برنامه داريد از اين تابع استفاده كنيد و مقادير و بررسي كنيد و پاك سازي كنيد


SQL injection refers to the act of someone inserting a MySQL statement to be run on your database without your knowledge. Injection usually occurs when you ask a user for input, like their name, and instead of a name they give you a MySQL statement that you will unknowingly run on your database.

http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php

Vahid Faraji
جمعه 05 شهریور 1389, 18:45 عصر
دوست عزيز در هر صورت خيلي فرقي نميكنه براي جلوگيري از sql injection از اين تابع براي نشون ندادن مقادير در url هم ميتونيد از يك كلاس آماده ديگه استفاده كنيد
در حقيقت فكر ميكنم شما با تعريف اصلي sql injection مشكل داريد !!!
چه از طريق فرم مقداري ارسال بشه به sql چه از طريق url شما قبل از كد هاي كوئري كه تو برنامه داريد از اين تابع استفاده كنيد و مقادير و بررسي كنيد و پاك سازي كنيد



http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php

يعني شما مي خواي بگي اون مثالي كه توي اون لينك هست حتما به يه سينگل كت نياز داره تا اجرا بشه كه اين سينگل كت هم با mysql_real_escape_string از بين مي ره، پس ما نبايد نگران استفاده از sql command ها باشيم؟

shahriyar3
شنبه 06 شهریور 1389, 00:49 صبح
يعني شما مي خواي بگي اون مثالي كه توي اون لينك هست حتما به يه سينگل كت نياز داره تا اجرا بشه كه اين سينگل كت هم با mysql_real_escape_string از بين مي ره، پس ما نبايد نگران استفاده از sql command ها باشيم؟

اين پارامتر هائي كه از طريق url ارسال ميشه براي يك value ارسال ميشه
مثلا شما url همين صفحه جاري رو ببينيد يه مقدار newreply براي متغير do ارسال شده حالا كافيه شما مقدار do رو تو صفحه بعدي چك كنيد و جلوي injection و بگيريد.

Vahid Faraji
شنبه 06 شهریور 1389, 09:45 صبح
اين پارامتر هائي كه از طريق url ارسال ميشه براي يك value ارسال ميشه
مثلا شما url همين صفحه جاري رو ببينيد يه مقدار newreply براي متغير do ارسال شده حالا كافيه شما مقدار do رو تو صفحه بعدي چك كنيد و جلوي injection و بگيريد.

حرف شما كاملا متين، آيا مي شه فقط با چك كردن با mysql_real_escape_string جلوي injection رو گرفت؟(مخصوصا مواردي كه از sql command استفاده كرده باشند)

binyaft
شنبه 06 شهریور 1389, 11:02 صبح
من شنیدم sql injection بر پایه ی ' است
این تابع هم ' رو به '\ تبدیل میکنه

Vahid Faraji
شنبه 06 شهریور 1389, 11:33 صبح
من شنیدم sql injection بر پایه ی ' است
این تابع هم ' رو به '\ تبدیل میکنه

شما درست مي گيد. ولي بحث sql command هم هست. لينكشو تو پست هاي قبلي گذاشتم.