mashhadweb 0 ارسال شده در اسفند 93 گزارش بازنشر ارسال شده در اسفند 93 سلام چه جوری میشه جلوی هک های sql injection رو گرفت ؟ یعنی چه تغییری تو کد نویسی باید داد ؟ نقل قول لینک به ارسال
Black_Sky 6349 ارسال شده در اسفند 93 گزارش بازنشر ارسال شده در اسفند 93 سلام چه جوري ميشه جلوي هک هاي sql injection رو گرفت ؟ يعني چه تغييري تو کد نويسي بايد داد ؟با سلام بستگي داره به نوع باگ Sql دارهراه هاي مختلفي هست مثلا Patch کردن خود باگ و يا بستن دسترسي حتي بعد نفوذ از طريق Sql injروش هاي جلوگيري از حمله:1- روش هاي رايج و معمول: در خيلي از مواقع تاکتيکي که خيلي از دوستان برنامه نويس براي جلوگيري از حمله انجام مي دهند، تاکتيک چک کردن ورودي و تبديل آن به کاراکتر هاي ديگه!مثلا تبديل کدهاي ورودي به نوع int و گرفتن ورودي به صورت عددي... و يا اضافه کردن يک کاراکتر / به ورودي و...کد زير را در نظر داشته باشيد:کد PHP:<?php$q="select * from TABLE where id=".$_GET['id']; $q1=mysql_query($q); ?>روشهاي معمول ايمن سازي به صورت زير است:1-استفاده از تابع int:کد اصلاح شده با اين متد:کد PHP:<?php$id=(int)$_GET['id']; $q="select * from TABLE where id='".$id."'"; $q1=mysql_query($q); ?>2- اعتبار سنجي ورودي به وسيله تابع ctype_digit() که تقريبا کار بالا رو انجام ميده:کد اصلاح شده با اين متد:کد PHP:<?php$id=$_GET['id'];if(isset($id) AND ctype_digit($id)){ $q="select * from TABLE where id='".$id."'"; $q1=mysql_query($q);} ?>3- استفاده از escapeکد اصلاح شده با اين متد:کد PHP:<?php$id=$_GET['id']; $q="select * from TABLE where id='".mysql_real_escape_string($id)."'"; $q1=mysql_query($q); ?>اين کد تمامي ورودي هاي مضر را خنثي مي کنه!متد escape روش هاي ديگه هم داره که خيلي ايمن نيستند اما من بخاطر اينکه تاپيک جامع هست آنها را مي آورم:استفاده از تابع addslash , str_replace:کد PHP:<?php$id=$_GET['id']; $q="select * from TABLE where id='".addslashes($id)."'"; $q1=mysql_query($q); ?>اين روش يک / به کد ورودي اضفه مي کنه...و براي str_replace:کد PHP:<?php$id=$_GET['id']; $q="select * from TABLE where id='".str_replace("'","''",$id)."'"; $q1=mysql_query($q); ?>همانطور که مي دانيد اين يک تابع تبديل هست و آرگومنت اول را به آرگومنت دوم تبديل مي کنه... 5 نقل قول لینک به ارسال
فرحان 997 ارسال شده در اسفند 93 گزارش بازنشر ارسال شده در اسفند 93 سلام. ببینید اکثر باگ هایی که توی کدهای php به وجود میاد ناشی از کوتاه نویسی و خلاصه نویسی هست. مثلا توی مثالی که Black_Sky آوردن فرض بر این بوده که هیچ چکی روی ورودی صورت نمیگیره و مستقیما درخواستی به پایگاه داده ارسال میشه. در حالی که حتما هر نوع ورودی ای چه از طریق کدنویسی وارد بشه چه توسط کاربر باید حداقل چک هایی روش صورت بگیره. نوع چک هم باید با این مفهوم باشه که مطمئن بشید همون چیزی هست که انتظار دارید.اگر کدتون رو استاندارد بنویسید و با دستورهای شرطی مطمئن بشید که ورودی همون چیزی هست که انتظار دارید دیگه نیازی نیست نگران هیچ نوع هکی باشید (البته به جز اونهایی که سرور رو هک می کنن و بعد شما رو ، چون از دستتون خارجه ).موفق باشید. 3 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .