lostyazilim
tr.link

Php güvenlik Hacker

4 Mesajlar 750 Okunma
lstbozum
tr.link

petrona petrona WM Aracı Kullanıcı
  • Üyelik 13.08.2017
  • Yaş/Cinsiyet 37 / E
  • Meslek bilişim
  • Konum Ankara
  • Ad Soyad E** T**
  • Mesajlar 170
  • Beğeniler 55 / 15
  • Ticaret 0, (%0)

Bu şekilde üye login girişim var. Kullanıcı telefon numarası ve şifresi ile giriş yapabiliyor.Sizce bu sistem hacklenabilir mi veya sql injection yapılabilirmi?

<?php

$telefon = $_POST['telefon'];

$sifre = $_POST['sifre'];



$db = new PDO("mysql:host=ttttttt;dbname=tttttt","ttttttt","tttttt");
  
$veri = $db->query("SELECT * FROM uyeWHERE telefon = '$telefon' and sifre = '$sifre' ",PDO::FETCH_ASSOC);

$gen = $veri -> rowcount();

if ($gen > 0) {

	      session_start();

	    $_SESSION['login']= true;
	    $_SESSION['telefon']= $telefon;
	    $_SESSION['sifre']= $sifre;

	    	setcookie("te",$telefon,time()+3600,'/');
                 
            header("Location: uyesayfa.php?id=$telefon");
	  
}
else {

	echo "<center>Kullanıcı adı veya şifre yanlış</center>";
}

?>

Üye sayfası güvenlik kodlarım üst kısımda aşağıdadır

uyesayfa.php

<?php

$id = $_GET['id'];

ob_start();

session_start();

if (isset($_SESSION['login'])) {


} else {

   
header("location: index.php");
}

?>
<html>
vs.....
</html>

Mesaj 1 defa düzenlendi. Son düzenleyen: petrona (05.08.2022 20:16)

 

 

Android uygulamalarınız yazılır,Reskin yapılır,Adwords Yönetimi,Seo.E-ticaret Profesyonel hizmet.
wmaraci
reklam

Procondio Procondio WM Aracı Kullanıcı
  • Üyelik 30.04.2016
  • Yaş/Cinsiyet 30 / E
  • Meslek Yazılım geliştirici
  • Konum Tekirdağ
  • Ad Soyad H** K**
  • Mesajlar 72
  • Beğeniler 25 / 24
  • Ticaret 1, (%100)
$veri = $db->query("SELECT * FROM uyeWHERE telefon = '$telefon' and sifre = '$sifre' ",PDO::FETCH_ASSOC);

Şu kısımda direkt olarak bir SQL injection zaafiyeti var. String'i concat ediyorsun ve SQL kodu dahil her şey gönderildiği gibi bu stringin içine dahil olacak. Bunun yerine prepared statement kullanman daha iyi olur. Örneğin şu şekilde yazabilirsin: 

$sorgu = $db->prepare("SELECT * FROM uyeWHERE telefon = ? and sifre = ? ",PDO::FETCH_ASSOC);
$veri = $sorgu->execute([$telefon, $sifre]);
129926

kişi bu mesajı beğendi.

petrona petrona WM Aracı Kullanıcı
  • Üyelik 13.08.2017
  • Yaş/Cinsiyet 37 / E
  • Meslek bilişim
  • Konum Ankara
  • Ad Soyad E** T**
  • Mesajlar 170
  • Beğeniler 55 / 15
  • Ticaret 0, (%0)

Procondio adlı üyeden alıntı

$veri = $db->query("SELECT * FROM uyeWHERE telefon = '$telefon' and sifre = '$sifre' ",PDO::FETCH_ASSOC);

Şu kısımda direkt olarak bir SQL injection zaafiyeti var. String'i concat ediyorsun ve SQL kodu dahil her şey gönderildiği gibi bu stringin içine dahil olacak. Bunun yerine prepared statement kullanman daha iyi olur. Örneğin şu şekilde yazabilirsin: 

$sorgu = $db->prepare("SELECT * FROM uyeWHERE telefon = ? and sifre = ? ",PDO::FETCH_ASSOC);
$veri = $sorgu->execute([$telefon, $sifre]);

 Dediğinizi yazdım sayfa çalışmadı  http 500 hatası verdi.Şu olmadı hata verdi

 

<?php

$telefon = $_POST['telefon'];

$sifre = $_POST['sifre'];


$db = new PDO("mysql:host=tttt;dbname=tttttt","ttttt","tttttttt");
  
$sorgu = $db->prepare("SELECT * FROM uyeler WHERE telefon = ? and sifre = ? ",PDO::FETCH_ASSOC);

$veri = $sorgu->execute([$telefon, $sifre]);


$gen = $veri -> rowcount();

if ($gen > 0) {

	      session_start();

	    $_SESSION['tak']= true;
	    $_SESSION['telefon']= $telefon;
	    $_SESSION['sifre']= $sifre;

	    	setcookie("te",$telefon,time()+3600,'/');
                 
            header("Location: uyesayfa.php?id=$telefon");
	  
}
else {

	echo "<center>Kullanıcı adı veya şifre yanlış</center>";
}

?>


 

 

Android uygulamalarınız yazılır,Reskin yapılır,Adwords Yönetimi,Seo.E-ticaret Profesyonel hizmet.

Procondio Procondio WM Aracı Kullanıcı
  • Üyelik 30.04.2016
  • Yaş/Cinsiyet 30 / E
  • Meslek Yazılım geliştirici
  • Konum Tekirdağ
  • Ad Soyad H** K**
  • Mesajlar 72
  • Beğeniler 25 / 24
  • Ticaret 1, (%100)

Pardon, hızlıca yazdığım için PDO::FETCH_ASSOC parametresini silmeyi unutmuşum. Şöyle olacak:

$sorgu = $db->prepare("SELECT * FROM uyeler WHERE telefon = ? and sifre = ? ");

Execute'u da çalıştırdıktan sonra gelen kayıt sayısını da "$veri->rowCount()" şeklinde alabilmen lazım.

 

 

wmaraci
wmaraci
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al