نمایش نتایج 1 تا 28 از 28

نام تاپیک: جلوگیری از sql injection ???

  1. #1

    جلوگیری از sql injection ???

    سلام دوستان

    من یک اسکریپت پی.اچ.پی نوشتم و در حال تکمیله

    و الان می خوام روی امنیت اطلاعات ورودی توسط کاربر کار کنم .

    در حال حاضر من یک تابع نوشتم به صورت

    function injection_replace( $txtobject )
    {
    return $txtobject;
    }

    و کلیه اطلاعات وارد شده در فرم های سایت نظیر فرم عضویت و ورود به سایت و .... با دستور زیر توسط تابع فوق چک میشه :

    $username = injection_replace( $_POST['username'] );

    هدف از اینکار جلوگیری از sql injection و XSS hacking و نیز حذف کد های html غیر ضروری و خطرناک نظیر <scri pt> و ... هست

    حالا برای نوشتن دستورات str_replace دنبال یک مرجع یا لیست کاملی از کدهایی که باید جایگزین بشن می گردم .

    1- آیا تابع آماده ای برای این منظور سراغ دارین که کامل باشه و همه موارد رو رعایت کرده باشه ؟؟؟

    2- و یا تابع مشابه این مورد رو در یکی از اسکریپت های مدیریت محتوا معرفی کنید تا از اون استفاده کنم . مثلا همچین تابعی اگر در vbuletin یا مامبو یا ... هست بگین کدمش بهتره تا اون روبردارم

    و یک سوال دیگه

    تفاوت 2 کد زیر در چیه ؟؟؟

    $check = mysql_query("SELECT FROM tablename WHERE Username = '".$username."' and Password = '".$password."'");

    $check = mysql_query("SELECT FROM tablename WHERE Username = '$username' and Password = '$password.");

    می خوام بدونم چرا برخی اسکریپت ها از نقطه استفاده می کنند ؟ نگاه کنید قبل و بعد از .$username. نقطه گذاشته . آیا تاثیری روی امنیت داره ؟؟؟

  2. #2

    نقل قول: جلوگیری از sql injection ???

    برای جلوگیری از sql injection می تونید از تابع زیر استفاده کنید:
    mysql_real_escape_string
    و برای <script> هم از تابع زیر:
    htmlspecialchars
    یک کتاب هم برای امنیت در php هست پیشنهاد می کنم حتما بخونید:
    Essential PHP Security
    By Chris Shiflett

  3. #3

    نقل قول: جلوگیری از sql injection ???

    توابع escape کار خاصی انجام نمی دهند. فقط کوتیشن ها و دابل کوتیشن ها رو خنثی می کنند (به اضافه عبارات خاصی مثل n\). تابع mysql_real_escape_string این کار رو انجام میده و جلوی SQL Injection رو میگیره.
    یه نکته ای این وسط هست و اون هم magic_quotes_gpcهست. اگر این بخش توی PHP فعال باشه، اطلاعاتی از GET و POST و COOKIE میان، خود بخود، escape میشن یعنی کوتیشن ها به '\ و دابل کوتیشن ها به "\ تبدیل میشن. حالا اگر ما چنین مقداری رو با توابع escape ، خنثی کنیم، یک backslash به کوتیشنها اضافه میشه و چون خودشون هم قبلا داشتند، میشه دو تا یعنی: "\\ که این با کوتیشن خالی فرق نمی کنه یعنی توابع escape خودشون، عبارت رو از حالت خنثی خارج کردند. در این حالت ما باید چک کنیم که magic_quotes_gpc فعاله یا نه (توسط تابع get_magic_quotes_gpc) اگر بود، یا باید کاری نکنیم یا باید با یک backslash اضافی، backslash موجود رو غیرفعال کنیم و بعد Escape کنیم. همه SQL Injection همین بود...
    توی همین فروم یه تابع نوشته شده که سرچ کنید پیدا می کنید.

    در رابطه با سوال دوم، هیچ فرقی وجود نداره. دومی خواناتره!

  4. #4

    نقل قول: جلوگیری از sql injection ???

    با عرض معذرت از دوستان عزیز ولی توابع mysql_real_escape_string به هیچ عنوان امنیت کامل رو برقرار نمیکنه و فقط چندتا از علامتهای معروف رو میبنده که هکر های مبتدی بلدن شما باید خودت فیلتر کنی داده هات رو با توجه به جایی که میخوای استفاده کنی!!!

    مثلا mysql_real_escape_string از -- جلوگیری نمیکنه!!!! میتونی تست کنی

  5. #5
    کاربر دائمی آواتار yasgig
    تاریخ عضویت
    تیر 1388
    محل زندگی
    اردبیل
    سن
    33
    پست
    534

    نقل قول: جلوگیری از sql injection ???

    یکی دیگه از توابع هم که میشه باهاش جلوی حملات XXS رو گرفت Strip_tags هستش.

  6. #6

    نقل قول: جلوگیری از sql injection ???

    یه نگاه به iranphp.ir هم بنداز بخش کدنویسی و امنیت تاپیک های مهم, چند تاپیک در مورد نکته های امنیتی گفته از جمله تابعی برای جلوگیری از sql injection

  7. #7

    نقل قول: جلوگیری از sql injection ???

    یه کاری هم که خیلی ساده و ابتدایی هست ولی بنظرم خیلی کاردبری است اینه که اون ورودی هایی رو که میتونی(مثل یوزر و پس) فیلتر اندازه بذاری مثلا بیشترین مقدار 10

  8. #8
    کاربر دائمی
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    ایران، شیراز، ... ، خونمون، روبروی مانیتور
    پست
    539

    نقل قول: جلوگیری از sql injection ???

    دوست عزیز به نظر من پسورد رو تو کوئری چک نکنید یعنی با یوزر کوئری بگیرید و پسورد رو بگیرید و با کد پی اچ پی چک کنید نه مثل کد شما
    $check = mysql_query("SELECT  FROM tablename WHERE Username ='$username' limit 0,1");
    if(mysql_result($check, 0, 1) == $_POST['pass']){ لاگین شد}
    دلیل

    فرض کنید مثل شما کوئری گرفتیم و یه کاربر نام کاربری رو بدونه و اینجوری وارد کنه:
    username : "admin'--"
    Pass : "123"
    وارد کرد

    اونوقته که کوئریتون به شکل زیر در میاد:
    $check = mysql_query("SELECT  FROM tablename WHERE Username =  'admin'--' and Password = '".$password."'");
    از اونجایی که میدونین هم -- در اس کیو ال یعنی کامنت و کاربر لاگین میکنه
    یا اگه یوزر و پسورد نداشته باشه اینجوری وارد کنه:
    username : "abc"
    Pass : "123' or '1'='1"
    باز هم لاگین میکنه

  9. #9

    نقل قول: جلوگیری از sql injection ???

    سلام دوست عزیز

    من یه نظر بهتر دارم

    کد های زیر رو در یه فایل php ذخیره کن و بعد در هر فایلی از سایتت که میخوای امنیت برقرار بشه این فایل رو Include کن


    <?php

    //غیر فعال کردن بارگذاری فایل راه دور با تابع fopen
    // برای جلوگیری از نصب شل کدها بسیار مناسب هست
    ini_set('allow_url_fopen',false);
    //غیر فعال کردن نمایش خطا ها
    ini_set('display_errors',false);


    Class SecModule
    {

    var $options=array('GET'=>true,
    'POST'=>true,
    'COOKIE'=>true,
    'REQUEST'=>true);
    // تعریف فیلتر ها
    var $patterns=array('SQL'=>'/(["]|[\'])/i',
    'SQLinjection'=>'/select|union|concat|char/i',
    'Crosssite'=>'/(\.\.)/',
    'HEX'=>'/0x/',
    'cmd'=>'/base64_decode|system/',
    'XSS'=>'/<script>/',
    'TAG'=>'/<|>|<>/i',
    'SHIFT'=>'/([!]|[#]|[$]|[%]|[^]|[&]|[*]|[(]|[)]|[+]|[~]|[`]|[\|]|[.]|[,]|[\]]|[\[]|[}]|[{]|[?]|[>]|[<])/i');
    function SecModule()
    {
    foreach($this->options as $k=>$int)
    {
    if($int)
    {
    //sql injection
    $this->load_objects($k,$this->patterns['SQL']);
    $this->load_objects($k,$this->patterns['SQLinjection']);
    //crosssite
    $this->load_objects($k,$this->patterns['Crosssite']);
    //hexademicaly encoded
    $this->load_objects($k,$this->patterns['HEX']);
    //javascript injection
    $this->load_objects($k,$this->patterns['XSS']);
    //filter some php command
    $this->load_objects($k,$this->patterns['cmd']);
    $this->load_objects($k,$this->patterns['TAG']);
    $this->load_objects($k,$this->patterns['SHIFT']);
    }
    }
    }
    function load_objects($objname,$pattern)
    {
    switch($objname)
    {
    case 'GET':
    $obj=$_GET;
    break;
    case 'POST':
    $obj=$_POST;
    break;
    case 'COOKIE':
    $obj=$_COOKIE;
    break;
    case 'REQUEST':
    $obj=$_REQUEST;
    break;
    }
    foreach($obj as $key=>$value)
    {
    $value=$this->check_object($pattern,$value);
    switch($objname)
    {
    case 'GET':
    $_GET[$key]=$value;
    break;
    case 'POST':
    $_POST[$key]=$value;
    break;
    case 'COOKIE':
    $_COOKIE[$key]=$value;
    break;
    case 'REQUEST':
    $_REQUEST[$key]=$value;
    break;
    }

    }
    }

    function check_object($pattern,$value)
    {
    if(is_array($value))
    {
    foreach($value as $k=>$v)
    {
    $new_value[$k]=$this->check_object($pattern,$v);
    }
    return $new_value;
    }
    preg_match($pattern,$value,$result);
    if(!empty($result[0]))
    {
    $value=false;
    }
    return $value;
    }
    }
    $SM=new SecModule;

    ?>


  10. #10

    نقل قول: جلوگیری از sql injection ???

    نقل قول نوشته شده توسط miladanimator مشاهده تاپیک
    می خوام بدونم چرا برخی اسکریپت ها از نقطه استفاده می کنند ؟ نگاه کنید قبل و بعد از .$username. نقطه گذاشته . آیا تاثیری روی امنیت داره ؟؟؟
    تاجایی که میدونم بخاطر سرعت بالاتر روش concatenation (همون کاری که نقطه انجام میده) هست.
    البته بنظر من خیلیا دیگه شورش رو درمیارن و وسواس بخرج میدن.
    من خودم تست کردم در مورد رشته های خیلی کوتاه این اختلاف سرعت خیلی کمتر میشه.
    درمورد رشته های طولانی و پیچیده تر سرعت روش concatenation دو سه برابر و شاید بیشتر هست. اما بهرحال این دلیل نمیشه ما همه جا مجبور باشیم از این روش استفاده کنیم! مثلا کلی خودمون رو اذیت کنیم و احتمالا از خوانایی برنامه هم کم بشه تا نهایتا یک صدم ثانیه در هر Page زمان پردازش کمتری بدست بیاریم! این شاید فقط روی برنامه های خیلی بزرگ و پیچیده و سایتهای با ترافیک مفرط مهم بشه.
    اگر بخوایم اینطور وسواسی عمل کنیم باید خودمون از استفاده از کلی از امکانات شیرین زبانها محروم کنیم و اصلا چطوره بریم با سی برنامه وب بنویسیم چون سریعتر اجرا میشه و منابع کمتری مصرف میکنه!!

  11. #11
    کاربر دائمی آواتار tehro0n
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    متغیر!
    پست
    465

    نقل قول: جلوگیری از sql injection ???

    نقل قول نوشته شده توسط milad89 مشاهده تاپیک
    سلام دوست عزیز

    من یه نظر بهتر دارم

    کد های زیر رو در یه فایل php ذخیره کن و بعد در هر فایلی از سایتت که میخوای امنیت برقرار بشه این فایل رو Include کن


    <?php

    //غیر فعال کردن بارگذاری فایل راه دور با تابع fopen
    // برای جلوگیری از نصب شل کدها بسیار مناسب هست
    ini_set('allow_url_fopen',false);
    //غیر فعال کردن نمایش خطا ها
    ini_set('display_errors',false);


    Class SecModule
    {

    var $options=array('GET'=>true,
    'POST'=>true,
    'COOKIE'=>true,
    'REQUEST'=>true);
    // تعریف فیلتر ها
    var $patterns=array('SQL'=>'/(["]|[\'])/i',
    'SQLinjection'=>'/select|union|concat|char/i',
    'Crosssite'=>'/(\.\.)/',
    'HEX'=>'/0x/',
    'cmd'=>'/base64_decode|system/',
    'XSS'=>'/<script>/',
    'TAG'=>'/<|>|<>/i',
    'SHIFT'=>'/([!]|[#]|[$]|[%]|[^]|[&]|[*]|[(]|[)]|[+]|[~]|[`]|[\|]|[.]|[,]|[\]]|[\[]|[}]|[{]|[?]|[>]|[<])/i');
    function SecModule()
    {
    foreach($this->options as $k=>$int)
    {
    if($int)
    {
    //sql injection
    $this->load_objects($k,$this->patterns['SQL']);
    $this->load_objects($k,$this->patterns['SQLinjection']);
    //crosssite
    $this->load_objects($k,$this->patterns['Crosssite']);
    //hexademicaly encoded
    $this->load_objects($k,$this->patterns['HEX']);
    //javascript injection
    $this->load_objects($k,$this->patterns['XSS']);
    //filter some php command
    $this->load_objects($k,$this->patterns['cmd']);
    $this->load_objects($k,$this->patterns['TAG']);
    $this->load_objects($k,$this->patterns['SHIFT']);
    }
    }
    }
    function load_objects($objname,$pattern)
    {
    switch($objname)
    {
    case 'GET':
    $obj=$_GET;
    break;
    case 'POST':
    $obj=$_POST;
    break;
    case 'COOKIE':
    $obj=$_COOKIE;
    break;
    case 'REQUEST':
    $obj=$_REQUEST;
    break;
    }
    foreach($obj as $key=>$value)
    {
    $value=$this->check_object($pattern,$value);
    switch($objname)
    {
    case 'GET':
    $_GET[$key]=$value;
    break;
    case 'POST':
    $_POST[$key]=$value;
    break;
    case 'COOKIE':
    $_COOKIE[$key]=$value;
    break;
    case 'REQUEST':
    $_REQUEST[$key]=$value;
    break;
    }

    }
    }

    function check_object($pattern,$value)
    {
    if(is_array($value))
    {
    foreach($value as $k=>$v)
    {
    $new_value[$k]=$this->check_object($pattern,$v);
    }
    return $new_value;
    }
    preg_match($pattern,$value,$result);
    if(!empty($result[0]))
    {
    $value=false;
    }
    return $value;
    }
    }
    $SM=new SecModule;

    ?>

    میشه با توجه به پستی که در زیر دادم یک مثال بزنی؟
    https://barnamenevis.org/showthread.php?t=237247

  12. #12
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    سطل قهوه!!!
    سن
    92
    پست
    354

    نقل قول: جلوگیری از sql injection ???

    به هیچ وجه توابع آماده امنیت کامل ندارن
    بهترین مورد اینه که شما برای هر قسمت یه تابع فیلتر گذاری درست کنید
    مثلا برای قسمت جستجو یه جود داده ها رو انتقال بده
    واسه لاگین هم باز یه نوع تابع دیگه
    یه چیز دیگه هم اینه که پسورد رو توی کويری چک نکن!
    و خیلی چیزهای دیگه
    برقراری امنیت روش خاصی نداره
    کاملا به عقل و منطق برنامه نویس مربوط میشه!

  13. #13
    کاربر دائمی آواتار parselearn
    تاریخ عضویت
    مهر 1386
    محل زندگی
    مشهد || parsa.ws
    پست
    1,147

    نقل قول: جلوگیری از sql injection ???

    نقل قول نوشته شده توسط milad89 مشاهده تاپیک
    سلام دوست عزیز

    من یه نظر بهتر دارم

    کد های زیر رو در یه فایل php ذخیره کن و بعد در هر فایلی از سایتت که میخوای امنیت برقرار بشه این فایل رو Include کن


    <?php

    //غیر فعال کردن بارگذاری فایل راه دور با تابع fopen
    // برای جلوگیری از نصب شل کدها بسیار مناسب هست
    ini_set('allow_url_fopen',false);
    //غیر فعال کردن نمایش خطا ها
    ini_set('display_errors',false);


    Class SecModule
    {

    var $options=array('GET'=>true,
    'POST'=>true,
    'COOKIE'=>true,
    'REQUEST'=>true);
    // تعریف فیلتر ها
    var $patterns=array('SQL'=>'/(["]|[\'])/i',
    'SQLinjection'=>'/select|union|concat|char/i',
    'Crosssite'=>'/(\.\.)/',
    'HEX'=>'/0x/',
    'cmd'=>'/base64_decode|system/',
    'XSS'=>'/<script>/',
    'TAG'=>'/<|>|<>/i',
    'SHIFT'=>'/([!]|[#]|[$]|[%]|[^]|[&]|[*]|[(]|[)]|[+]|[~]|[`]|[\|]|[.]|[,]|[\]]|[\[]|[}]|[{]|[?]|[>]|[<])/i');
    function SecModule()
    {
    foreach($this->options as $k=>$int)
    {
    if($int)
    {
    //sql injection
    $this->load_objects($k,$this->patterns['SQL']);
    $this->load_objects($k,$this->patterns['SQLinjection']);
    //crosssite
    $this->load_objects($k,$this->patterns['Crosssite']);
    //hexademicaly encoded
    $this->load_objects($k,$this->patterns['HEX']);
    //javascript injection
    $this->load_objects($k,$this->patterns['XSS']);
    //filter some php command
    $this->load_objects($k,$this->patterns['cmd']);
    $this->load_objects($k,$this->patterns['TAG']);
    $this->load_objects($k,$this->patterns['SHIFT']);
    }
    }
    }
    function load_objects($objname,$pattern)
    {
    switch($objname)
    {
    case 'GET':
    $obj=$_GET;
    break;
    case 'POST':
    $obj=$_POST;
    break;
    case 'COOKIE':
    $obj=$_COOKIE;
    break;
    case 'REQUEST':
    $obj=$_REQUEST;
    break;
    }
    foreach($obj as $key=>$value)
    {
    $value=$this->check_object($pattern,$value);
    switch($objname)
    {
    case 'GET':
    $_GET[$key]=$value;
    break;
    case 'POST':
    $_POST[$key]=$value;
    break;
    case 'COOKIE':
    $_COOKIE[$key]=$value;
    break;
    case 'REQUEST':
    $_REQUEST[$key]=$value;
    break;
    }

    }
    }

    function check_object($pattern,$value)
    {
    if(is_array($value))
    {
    foreach($value as $k=>$v)
    {
    $new_value[$k]=$this->check_object($pattern,$v);
    }
    return $new_value;
    }
    preg_match($pattern,$value,$result);
    if(!empty($result[0]))
    {
    $value=false;
    }
    return $value;
    }
    }
    $SM=new SecModule;

    ?>

    اين كد رو كسي ميتونه توضيح بده؟
    و نحوه استفاده رو بگه.

  14. #14

    نقل قول: جلوگیری از sql injection ???

    سلام
    1. mysql_real_escape_string با mysql_escape_string چه فرقی میکنه ؟
    2. چطور میشه get_magic_quotes_gpc رو غیر فعال یا فعال کرد ؟
    با تشکر

  15. #15

    نقل قول: جلوگیری از sql injection ???

    mysql_real_escape_string در داخل خود MySQL اجرا میشه. درواقع MySQL خودش چنین تابعی داره که بنده در رفرنسش دیدم. پس تابع mysql_real_escape_string پی اچ پی بصورت یک Wrapper عمل میکنه.

    mysql_escape_string بنظرم مال خود PHP باشه.

    ترجیح mysql_real_escape_string بر mysql_escape_string اکیدا توصیه میشه.

  16. #16

    نقل قول: جلوگیری از sql injection ???

    فرقشون رو نمیدونم ولی همونطور که دوستمون توضیح دادن mysql_real_escape_string باید استفاده بشه.

    برای magic_quote میتونی:
    1. تو php.ini تنظییم کنی
    2. از تابع ini_set استفاده کنی

  17. #17
    کاربر دائمی آواتار parselearn
    تاریخ عضویت
    مهر 1386
    محل زندگی
    مشهد || parsa.ws
    پست
    1,147

    نقل قول: جلوگیری از sql injection ???

    آيا چنين كدي براي مقابله با حمله اوليه sqli مناسبه؟

    $s= "0--ad'";
    $s=str_replace("'","",$s);
    $s=str_replace("0--","",$s);
    $s=str_replace("+and+","",$s);
    echo $s;

  18. #18

    نقل قول: جلوگیری از sql injection ???

    سلام
    کسی می تونه 1 مثال واسه این بزنه
    یه چیز دیگه هم اینه که پسورد رو توی کويری چک نکن!

  19. #19

    نقل قول: جلوگیری از sql injection ???

    نه اون تابع کافی نیست!
    فقط متغیر هاتو mysql_real_escape کن

    یه چیز دیگه هم اینه که پسورد رو توی کويری چک نکن!
    یعنی پسورد رو بگیر از دیتابیس و بعد با php چک کن.

    در کل بهتره از یک Orm استفاده کنید. اولش سخته ولی خیلی بهتره.
    اگه یه چیز راحت میخای zend_db و اگه یه چیز کامل میخای doctrine رو چک کنید.

  20. #20
    کاربر دائمی آواتار narsic
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    دهکده جهانی
    سن
    35
    پست
    1,020

    نقل قول: جلوگیری از sql injection ???

    نقل قول نوشته شده توسط milad89 مشاهده تاپیک
    سلام دوست عزیز

    من یه نظر بهتر دارم

    کد های زیر رو در یه فایل php ذخیره کن و بعد در هر فایلی از سایتت که میخوای امنیت برقرار بشه این فایل رو Include کن
    اگه هکر به جای select از SELECT استفاده کنه برنامه شما رو دور زده (برای همهی موارد همینه)

    نقل قول نوشته شده توسط rash44 مشاهده تاپیک
    سلام
    کسی می تونه 1 مثال واسه این بزنه
    یعنی از این استفاده کنید .
    $check = mysql_query("SELECT  FROM tablename WHERE Username ='$username' limit 0,1");
    if(mysql_result($check, 0, 1) == $_POST['pass']){ لاگین شد}

  21. #21

    نقل قول: جلوگیری از sql injection ???

    آقا چه کاریه از prepared statement استفاده کن دیگه با اینجکشن خدافظی کن

  22. #22

    نقل قول: جلوگیری از sql injection ???

    بهترین کار این هست که علاوه بر پی اچ پی در خود mysql هم داده ها بررسی شود

  23. #23
    کاربر دائمی آواتار parselearn
    تاریخ عضویت
    مهر 1386
    محل زندگی
    مشهد || parsa.ws
    پست
    1,147

    نقل قول: جلوگیری از sql injection ???

    من يك تابع براي اين كار نوشتم



    function sqlin($s)
    {
    $s=strtolower($s);
    $s=str_replace("'","",$s);
    $s=str_replace("--","",$s);
    $s=str_replace("+and+","",$s);
    $s=str_replace("order+by","",$s);
    $s=str_replace("order by","",$s);
    $s=str_replace("union","",$s);
    $s=str_replace("union select","",$s);
    $s=str_replace("union+select","",$s);
    $s=str_replace("concat","",$s);
    $s=str_replace("user()","",$s);
    $s=str_replace("database()","",$s);
    $s=str_replace("version()","",$s);
    $s=str_replace("convert(","",$s);
    $s=str_replace("base64_decode","",$s);
    $s=str_replace("char(","",$s);
    $s=str_replace("alter table","",$s);
    $s=str_replace("alter+table","",$s);
    $s=str_replace("drop table","",$s);
    $s=str_replace("drop+table","",$s);
    $s=str_replace("drop","",$s);
    $s=str_replace("0x","",$s);
    $s=str_replace("\\","",$s);
    $s=str_replace("\'","",$s);
    $s=strip_tags($s);
    $s=mysql_escape_string($s);
    return $s;
    }
    آخرین ویرایش به وسیله parselearn : پنج شنبه 28 مرداد 1389 در 00:08 صبح

  24. #24

    نقل قول: جلوگیری از sql injection ???

    نقل قول نوشته شده توسط parselearn مشاهده تاپیک
    من يك تابع براي اين كار نوشتم
    چطوري؟


    function sqlin($s)
    {
    $s=strtolower($s);
    $s=str_replace("'","",$s);
    $s=str_replace("--","",$s);
    $s=str_replace("+and+","",$s);
    $s=str_replace("order+by","",$s);
    $s=str_replace("order by","",$s);
    $s=str_replace("union","",$s);
    $s=str_replace("union select","",$s);
    $s=str_replace("union+select","",$s);
    $s=str_replace("concat","",$s);
    $s=str_replace("user()","",$s);
    $s=str_replace("database()","",$s);
    $s=str_replace("version()","",$s);
    $s=str_replace("convert(","",$s);
    $s=str_replace("base64_decode","",$s);
    $s=str_replace("char(","",$s);
    $s=str_replace("alter table","",$s);
    $s=str_replace("alter+table","",$s);
    $s=str_replace("drop table","",$s);
    $s=str_replace("drop+table","",$s);
    $s=str_replace("drop","",$s);
    $s=str_replace("0x","",$s);
    $s=str_replace("\\","",$s);
    $s=str_replace("\'","",$s);
    $s=str_replace("/","",$s);
    $s=strip_tags($s);
    $s=mysql_escape_string($s);
    return $s;
    }
    چی چطوری؟
    تابع رو چطوری نوشتی؟

  25. #25
    کاربر دائمی آواتار parselearn
    تاریخ عضویت
    مهر 1386
    محل زندگی
    مشهد || parsa.ws
    پست
    1,147

    نقل قول: جلوگیری از sql injection ???

    معذرت ميخوام
    منظورم اين كه در چه سطحي؟ (چطوريه؟)

    اطلاعاتي كه مثلا از متد post ميگيريم رو به اين ميديم، خروجي ميگيريم!!!

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

  26. #26

    نقل قول: جلوگیری از sql injection ???

    نقل قول نوشته شده توسط parselearn مشاهده تاپیک
    معذرت ميخوام
    منظورم اين كه در چه سطحي؟ (چطوريه؟)

    اطلاعاتي كه مثلا از متد post ميگيريم رو به اين ميديم، خروجي ميگيريم!!!

    البته اينو ميخوام شبيه كدي كه صفحات قبلي هست درست كنم
    یکی از مشکل ها این روش این هست که مقداری برابر uniongfgf را قبول نمیکنه
    در صورتی که مشکلی نداره
    چرا سمت اس کبو ال جلوی این کار رو نمیگیرید؟

  27. #27
    کاربر جدید
    تاریخ عضویت
    تیر 1389
    محل زندگی
    ایران
    پست
    25

    نقل قول: جلوگیری از sql injection ???

    سلام
    میشه بگید که چطور میشه در سمت sql چک کرد؟

  28. #28

    نقل قول: جلوگیری از sql injection ???

    با نوشتن یک روال که اطلاعات رو به صورت ورودی میگیره
    تایگر ها هم کمک میکنه تو این قضیه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •