 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
Daniel_Costi
Data înscrierii: 16/Aug/2008
Mesaje: 3
|
| Trimis: Mie Aug 20, 2008 2:49 pm Titlul subiectului: Patchuire Script |
|
|
<?php
//Profil Membru
include("../connect.php");
if(isset($_GET['id']) && !empty($_GET['id']) )
{
$id = $_GET['id'];
$result = mysql_query("SELECT username FROM users WHERE id=$id");
$end = mysql_result($result, 0);
echo $end
}
?>
Se pare ca scriptul e vulnerabil la SQL Injection.Din cauza carei linii si cum as putea sa il patchuiesc incat sa nu mai fie vulnerabil?
mersi! |
|
| Sus |
|
vectorialpx
Data înscrierii: 01/Mar/2005
Mesaje: 3014
Locație: țopăi pe tasta DELETE
|
| Trimis: Mie Aug 20, 2008 2:56 pm Titlul subiectului: |
|
|
Citat: Se pare ca scriptul e vulnerabil la SQL Injection.Din cauza carei linii si cum as putea sa il patchuiesc incat sa nu mai fie vulnerabil?
raspuns: linia in care interactionezi cu sql-ul
$result = mysql_query("SELECT username FROM users WHERE id=$id");
should be
$result = mysql_query("SELECT username FROM users WHERE id=".(int)$id);
or
$result = mysql_query("SELECT username FROM users WHERE id='".mysql_real_escape_string($id)."'"); |
|
| Sus |
|
RndUsr
Data înscrierii: 19/Aug/2008
Mesaje: 6
Locație: Craiova
|
| Trimis: Mie Aug 20, 2008 2:57 pm Titlul subiectului: |
|
|
Cod:
<?php
//Profil Membru
include("../connect.php");
if(isset($_GET['id']) && !empty($_GET['id']) )
{
$id = $_GET['id']; //aici e incepe problema
$result = mysql_query("SELECT username FROM users WHERE id=$id"); //si aici se termina :)
$end = mysql_result($result, 0);
echo $end
}
?>
Problema e ca iei un id din get, verifici doar daca nu e gol si apoi il folosesti in query. Niciodata nu trebuie sa folosesti datele primite de la utilizator fara sa fii sigur ca sunt valide. Cauta pe google despre SQL injection si ai sa vezi despre ce e vorba, nu imi vine in minte nici un articol sa iti dau un link.
Si codul modificat:
Cod:
<?php
//Profil Membru
include("../connect.php");
//id-ul trebuie sa fie un numar natural pozitiv
if(!empty($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] >= 0)
{
$id = (int)$_GET['id']; //(int) e un type-cast, nu stiu daca e necesar dar e o chestie ramasa de prin C si mereu fac asta.
$result = mysql_query("SELECT username FROM users WHERE id=$id");
$end = mysql_result($result, 0);
echo $end
}
?>
//LE: am postat in acelas timp :) |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|