Gå til innhold

Hvordan forhindre mysql injection?


Anbefalte innlegg

Videoannonse
Annonse
Hvordan kan jeg forhindre mysql-injection i URL ?

 

Uansett hvordan URL'en ser ut.

Dette har ingenting med URL å gjøre. Det spørs på kordan du validerer parametre for spørringen. Det beste er å bruke prepared statements med PDO.

Skal du bruke mysql funksjonene kan du bruke mysql_real_escape_string på de fleste tekst parametre, men du kan også validere tall som tall, epost som epost, tekststreng som a-åA-Å, personnummer som personnummer, etc. Sjekk link i min signatur.

Lenke til kommentar
Hvordan kan jeg forhindre mysql-injection i URL ?

 

Uansett hvordan URL'en ser ut.

Dette har ingenting med URL å gjøre. Det spørs på kordan du validerer parametre for spørringen. Det beste er å bruke prepared statements med PDO.

Skal du bruke mysql funksjonene kan du bruke mysql_real_escape_string på de fleste tekst parametre, men du kan også validere tall som tall, epost som epost, tekststreng som a-åA-Å, personnummer som personnummer, etc. Sjekk link i min signatur.

 

PDO, fungerer ikke på one.com?

Kommer kun at execute funksjonene ikke er definert:s

Lenke til kommentar

 

Hvordan?

 

mysql_real_escape_string($_GET); ??

mysql_real_escape_string($_REQUEST); ??

 

Ingen av dem fungerer..

forach( $_GET as $k => $v )
{
$k = mysql_real_escpae_string( $k );
$v = mysql_real_escpae_string( $v );

$_GET[ $k ] = $v;
}
forach( $_POST as $k => $v )
{
$k = mysql_real_escpae_string( $k );
$v = mysql_real_escpae_string( $v );

$_POST[ $k ] = $v;
}

Lenke til kommentar

	foreach($_GET as $k => $v)
{
	$k = mysql_real_escape_string( $k );
	$v = mysql_real_escape_string( $v );

	$_GET[ $k ] = $v;
}
foreach( $_POST as $k => $v )
{
	$k = mysql_real_escape_string( $k );
	$v = mysql_real_escape_string( $v );

	$_POST[ $k ] = $v;
}

 

Fungerer ikke..

 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'mafiasos.net'@'srv125.one.com' (using password: NO) in /customers/mafiasos.net/mafiasos.net/httpd.www/inc/config/config.php on line 9

 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /customers/mafiasos.net/mafiasos.net/httpd.www/inc/config/config.php on line 9

 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'mafiasos.net'@'srv125.one.com' (using password: NO) in /customers/mafiasos.net/mafiasos.net/httpd.www/inc/config/config.php on line 10

 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /customers/mafiasos.net/mafiasos.net/httpd.www/inc/config/config.php on line 10

Endret av cyclo
Fjernet unødvendig quote
Lenke til kommentar

kan vi kanskje få se koden?

<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());

// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
		mysql_real_escape_string($user),
		mysql_real_escape_string($password));
?>

L2læs på manualn!

 

EDIT: BTW, One.com krever at du har passord på mysql tilkoblinga nokka som du tydeligvis ikkje har fått me dæ

Access denied for user 'mafiasos.net'@'srv125.one.com' (using password: NO)
Endret av cyclo
Lenke til kommentar

/* database variabler */

$host = "localhost"; // 192.168.1.3

$bruker_sql = "***";

$pass_sql = "***";

$database = "***";

 

 

 

 

/* lager en klasse for å koble til */

class KobleTil {

 

function Server($host,$bruker_sql,$pass_sql) {

mysql_connect("$host", "$bruker_sql", "$pass_sql");

}

function Base($database) {

mysql_select_db("$database");

}

 

}

 

 

 

 

/* lager ny klasse */

$KobleTil = new KobleTil();

 

/* oppretter tilkobling */

$KobleTil->Server($host,$bruker_sql,$pass_sql);

$KobleTil->Base($database);

Lenke til kommentar

Poster eksemplet til famen en gang til

<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());

// Query
[b]$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
		mysql_real_escape_string($user),
		mysql_real_escape_string($password));[/b]
?>

Lenke til kommentar
Poster eksemplet til famen en gang til

 

Jeg greier fint og koble til databasen, og jeg spør ikke om hvordan jeg bruker sprintf. Jeg spør om: HVORDAN KAN JEG HINDRE MYSQL-INJECTION I URLEN ?? ($_get)

Endret av PS_CS4
Lenke til kommentar

Det er jo det de skriver . Dersom du bruker mysql_real_escape_string på input som skal til databasen, forhindrer du jo mysql injection.

 

Du kan også ta i bruk den velkjente quote_smart funksjonen:

 

function quote_smart($value){
	// Stripslashes
	if (get_magic_quotes_gpc() && !is_null($value) ) {
			$value = stripslashes($value);
	}

	//Change decimal values from , to . if applicable
	if( is_numeric($value) && strpos($value,',') !== false ){
			$value = str_replace(',','.',$value);
	}
	if( is_null($value) ){
			$value = 'NULL';
	}
	// Quote if not integer or null
	elseif (!is_numeric($value)) {
			$value = "'" . mysql_real_escape_string($value) . "'";
	}

	return $value;
}

 

Lykke til :)

Lenke til kommentar
Poster eksemplet til famen en gang til

 

Jeg greier fint og koble til databasen, og jeg spør ikke om hvordan jeg bruker sprintf. Jeg spør om: HVORDAN KAN JEG HINDRE MYSQL-INJECTION I URLEN ?? ($_get)

Det er umulig å forhindre sql-injection i URLen. Dette skal forhindres i sql spørringen, der du escaper/filtrerer alle parametre skikkelig.

Lenke til kommentar
Poster eksemplet til famen en gang til

 

Jeg greier fint og koble til databasen, og jeg spør ikke om hvordan jeg bruker sprintf. Jeg spør om: HVORDAN KAN JEG HINDRE MYSQL-INJECTION I URLEN ?? ($_get)

Det er umulig å forhindre sql-injection i URLen. Dette skal forhindres i sql spørringen, der du escaper/filtrerer alle parametre skikkelig.

 

Man kan kjøre en spørring, rett fra URL'en ?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...