Re: SQL Injection - Solution
| From: | Bruno Fajardo | Date: | Wed, 06 May 2009 16:06:06 +0000 |
| Subject: | Re: SQL Injection - Solution | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-292347@lists.php.net to get a copy of this message | ||
Hi there!
2009/5/6 Igor Escobar <titiolinkin@gmail.com>
>
> Hi folks,
> Someone know how i can improve this function to protect my envairounment
> vars of sql injection attacks.
>
> that is the function i use to do this, but, some people think is not enough:
>
> * @uses $_REQUEST= _antiSqlInjection($_REQUEST);
> * @uses $_POST = _antiSqlInjection($_POST);
> * @uses $_GET = _antiSqlInjection($_GET);
> *
> * @author Igor Escobar
> * @email blog [at] igorescobar [dot] com
> *
> */
>
> function _antiSqlInjection($Target){
> $sanitizeRules =
>
> array('OR','FROM,'SELECT','INSERT','DELETE','WHERE','DROP
> TABLE','SHOW
> TABLES','*','--','=');
> foreach($Target as $key => $value):
> if(is_array($value)): $arraSanitized[$key] = _antiSqlInjection($value);
> else:
> $arraSanitized[$key] =
> addslashes(strip_tags(trim(str_replace($sanitizeRules,"",$value))));
> endif;
> endforeach;
> return $arraSanitized;
>
>
> }
>
> You can help me to improve them?
What if someone posts, in any form of your app, a message containing
"or", "from" or "where"? Those are very common words, and eliminate
them is not the best solution, IMO.
Use mysql_real_escape_string() like Shawn said, possibly something
like this would do the trick (from
http://br2.php.net/manual/en/function.mysql-query.php):
$query = sprintf("SELECT firstname, lastname, address, age FROM
friends WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));
Cheers,
Bruno.
>
>
>
> Regards,
> Igor Escobar
> Systems Analyst & Interface Designer
>
> --
>
> Personal Blog
> ~ blog.igorescobar.com
> Online Portifolio
> ~ www.igorescobar.com
> Twitter
> ~ @igorescobar