[PHP] alternative to mysql_real_escape_string()

2005-04-11 Thread info
Hello,
I have a quick question: To use a custom solution for inhibiting sql injection 
attacks and not a database specific solution like mysql_real_escape_string()

http://php.net/manual/en/function.mysql-real-escape-string.php

 ... that will run on any database, not just MySql, would the following be a 
viable solution:

a. addslashes() to all variables and
b. remove specific unwanted characters from input including:

-- [comment sign in SQL]
'  [single quote]

It is possible to just destroy the unwanted characters in a login form and 
prohibit use of those characters in username and password fields.

Would a. plus b. above provide reasonably good protection to inhibit sql 
injection attacks, or what is the best database independent approach using php 
and not a database function?

Thank you for any help.

Robin.
http://www.globalissa.com
info[at]globalissa.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] alternative to mysql_real_escape_string()

2005-04-11 Thread Richard Lynch
On Mon, April 11, 2005 12:16 am, [EMAIL PROTECTED] said:
> I have a quick question: To use a custom solution for inhibiting sql
> injection attacks and not a database specific solution like
> mysql_real_escape_string()
>
> http://php.net/manual/en/function.mysql-real-escape-string.php
>
>  ... that will run on any database, not just MySql, would the following be
> a viable solution:
>
> a. addslashes() to all variables and
> b. remove specific unwanted characters from input including:
>
> -- [comment sign in SQL]
> '  [single quote]

No.

# is the comment sign in SQL
No, wait, it's /* ... */
No, wait, there is no comment sign in SQL.

Which database are you using?

> It is possible to just destroy the unwanted characters in a login form and
> prohibit use of those characters in username and password fields.

That also can help, but you want some alphanumeric *AND* punctuation for
good passwords.

> Would a. plus b. above provide reasonably good protection to inhibit sql
> injection attacks, or what is the best database independent approach using
> php and not a database function?

class PlatformIndependentDatabase () {
  var $platform;

  /* Constructor sets $platform to 'mysql', or 'pgsql' or 'sql-server' ... */

  function escape_string ($string){
switch ($this->platform){
  case 'mysql': return mysql_real_escape_string($string); break;
  case 'pgsql': return pg_real_escapge_string($string); break;
  default: error_log("$this->platform has NO escape string?!"); return
$string; break;
}
  }
}

Disclaimer:  I don't use platform-independent db code, cuz I don't expect
to switch any time, and I don't use objects, cuz I'm a solo author and can
write better/faster code without them, so I likely have syntax errors in
the above.


-- 
Like Music?
http://l-i-e.com/artists.htm

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php