reklam
geroxy

Php güvenlik Hacker

  1. Konuyu Paylaş
4 Mesajlar 109 Okunma
ayhankaraman
reklam

petrona petrona WM Aracı Kullanıcı
  • Üyelik 13.08.2017
  • Yaş/Cinsiyet 34 / 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.
medyasosyal
reklam

Procondio Procondio WM Aracı Kullanıcı
  • Üyelik 30.04.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek Yazılım geliştirici
  • Konum Tekirdağ
  • Ad Soyad H** K**
  • Mesajlar 68
  • 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]);
ReşatTürksoy

kişi bu mesajı beğendi.

petrona petrona WM Aracı Kullanıcı
  • Üyelik 13.08.2017
  • Yaş/Cinsiyet 34 / 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 28 / E
  • Meslek Yazılım geliştirici
  • Konum Tekirdağ
  • Ad Soyad H** K**
  • Mesajlar 68
  • 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 reklam
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al