Real Escape String so richtig ?

  • Themenstarter Themenstarter starfoxfs
  • Beginndatum Beginndatum
S

starfoxfs

Hi zusammen,

Ich hab mir eine Mysql Class geschrieben, nun möchte ich nur wissen ob ich Mysql_Real_Escape_String so richtig anwende und ob das von der Sicherheit gegen Mysql Injections so funktioniert

PHP:
class mysql {

  function db_connect($db_host, $db_user, $db_pass, $db_name){

  $this->link_id = @mysql_connect("$db_host", "$db_user", "$db_pass");
  if (!is_resource($this->link_id)) {
    die('Verbindung konnte nicht hergestellt werden : ' . mysql_error());
}
  mysql_select_db("$db_name", $this->link_id);
 
 
  }// Connection Ends

  function close(){

  mysql_close($this->db_connect);

  } //ends the close function



function query($sql){
  $query = mysql_query($sql, $this->link_id) or die(mysql_error());
  return $query;
  }//ends the query function

So und nun die Abfrage:

PHP:
if(isset($_POST["modell"])) { $modell = stripslashes(htmlspecialchars($_POST["modell"])); }

$typ = mysql_real_escape_string($modell);
$sql = sprintf("SELECT CAREA FROM ".$sqltab1." WHERE CMODNAMEPC = '%s'", $typ);
$result = $db->query($sql)or die(mysql_error());
while ($area = $db->fetcharray($result))
{
.
.
.
 
Keiner ne Antwort ?

Was mir nur komisch vorkommt ist das normalerweise ja noch die DB Connection geprüft wird

PHP:
$typ = mysql_real_escape_string($modell);

funktioniert aber nur so

nicht so:

PHP:
$typ = mysql_real_escape_string($modell,this->link_id);
 
Hi,

Was mir nur komisch vorkommt ist das normalerweise ja noch die DB Connection geprüft wird

PHP:
$typ = mysql_real_escape_string($modell);

funktioniert aber nur so

nicht so:

PHP:
$typ = mysql_real_escape_string($modell,this->link_id);

Du musst natürlich $db->link_id übergeben. $this ist in dem Kontext doch gar nicht definiert...
Wenn kein Link-Identifier übergeben wird, nimmt die Funktion die zuletzt geöffnete Verbindung, so vorhanden. Kannst Du aber alles im Manual nachlesen.

Zum Rest:
Warum wendest Du stripslashes() an, ohne vorher zu prüfen, ob das überhaupt nötig ist (magic_quotes eingeschaltet)?
Warum wendest Du htmlspecialchars() an? Das hat doch in der DB nichts zu suchen.
Ansonsten: mysql_real_escape_string() ist zum Escapen von Strings gedacht. Wenn das Feld "Modell" ein String ist, solltest Du also die Funktion darauf anwenden.

LG
 
Zurück