Anfaenger: PHP Sicherheit: SQL Injection

Beitrag lesen

Ich habe letztens eine Webseite optimieren lassen. Der Programmierer meinte, dass er meine Seite sicher machen will und hat auch seiner Meinung nach auch alles korrigiert, so dass ich gegen SQL Injection geschützt bin. Bevor die Seite online geht, wollte ich mir die Daten genauer anschauen und ich habe eine neue Seite bemerkt und des weiteren WinMerge benutzt und keine großen Unterschiede bemerkt. Kann mir mal einer sagen, 1. was die class.stmp macht und 2. wie ein typischer Datenstrang gegen den SQL Injection aussieht? Also ich möchte irgendwas in der PHP Datei finden, die typisch ist, was gegen SQL injection schützt.

Ist sowas gegen SQL Injection? $_GET["id"] = (int)$_GET["id"];

Hier die class.stmp. Die Email Adresse + Password + Textinhalt habe ich gelöscht/ersetzt:

<?php

class smtp {
private $sock;
private $connected = false;
private $content_type;
private $errormsg;

function \_\_construct($host, $user, $pass, $port = 25) {  
    $this->sock = socket\_create(AF\_INET, SOCK\_STREAM, getprotobyname("tcp"));  
    socket\_connect($this->sock, $host, $port);  

    $version = socket\_read($this->sock, 1024);  
    socket\_write($this->sock, "EHLO $host\r\n");  
  
    $response = socket\_read($this->sock, 1024);  
    if (ereg("LOGIN", $response)) {  
	socket\_write($this->sock, "AUTH LOGIN\r\n");  
	  
	$response = socket\_read($this->sock, 1024);  
	if (ereg("334", $response)) {  
	    socket\_write($this->sock, base64\_encode($user) . "\r\n");  

	    $response = socket\_read($this->sock, 1024);  
	    if (ereg("334", $response)) {  
		socket\_write($this->sock, base64\_encode($pass) . "\r\n");  
	  
		$response = socket\_read($this->sock, 1024);  
		if (ereg("235", $response))  
		    $this->connected = true;  
	    }  
	}  
    }  
}  

function isConnected() {  
    return $this->connected;  
}  

function getError() {  
    if ($this->errormsg != "")  
	return $this->errormsg;  
}  

function sendMail($from, $to, $replyTo, $subject, $msg) {  
    socket\_write($this->sock, "mail from: ABC@yahoo.com.ar\r\n");  
  
    $response = socket\_read($this->sock, 1024);  
    if (ereg("250", $response)) {  
	socket\_write($this->sock, "rcpt to: $to\r\n");  
	  
	$response = socket\_read($this->sock, 1024);  
	if (ereg("250", $response)) {  
	    socket\_write($this->sock, "data\r\n");  

	    $response = socket\_read($this->sock, 1024);  
	    if (ereg("354", $response)) {  

// en hotmail el header Date no se puede cambiar
// el encabezado llega tal cual lo mande, pero dentro del mail, se muestra con la hora real
// en yahoo se puede cambiar

		// headers  
		$message  = "";  
		$message .= "Content-Type: " . $this->content\_type . " charset='utf-8'\r\n";  
		$message .= "From: $from\r\n";  
		$message .= "To: $to\r\n";  
		$message .= "Reply-To: $replyTo\r\n";  
		$message .= "Subject: $subject\r\n\r\n";  
		$message .= $msg;  
		$message .= "\r\n";  
		$message .= ".";  
		$message .= "\r\n";  

		socket\_write($this->sock, $message . "\r\n" . "." . "\r\n");  
		$response = socket\_read($this->sock, 1024);  
		// si no se lee la ultima respuesta, no se puede volver a mandar otro mail	  
		if (ereg("250", $response))  
		    $this->errormsg = "";  
	    } else {  
		$this->errormsg = "[DATA error]";  
	    }  
	} else {  
	    $this->errormsg = "[RCPT TO error]";  
	}  
    } else {  
	$this->errormsg = "[MAIL FROM error]";  
    }  
}  

function setContentType($type) {
    if ($type == "text")
$this->content_type = "text/plain;";
    else if ($type == "html")
$this->content_type = "text/html;";
}

}

//    $smtp = new smtp("smtp.mail.yahoo.com.ar", "...", "...");
//    $smtp->isConnected();
//    $smtp->setContentType("text");
//    $smtp->sendMail("....@yahoo.com.ar", "ABC", "...P");

?>