v2.5.2
Giriş yap

Login bypass engellemek için filtreleme yardım

brkmst67
736 defa görüntülendi

Admin panelime giriş kısmında OR"' gibi değişik kodlar ile bypass ediliyordu bende biraz araştırdım ve veriyi filtrelemek gerekli olduğunu duydum.
Ancak php bilgim çok çok yeni ve bir türlü yapamadım. Elimde bu kodlara nasıl bir kod eklersek filtreleme yapabilirim? Yarımcı olursanız çok teşekkür ederim.

<?php 
 error_reporting(0);
 session_start();   

 include "baglan.php";
	 if ($connect->connect_error) {
		 die ("Bağlantı Hatası Oluştu");
	 }
	 if($_POST) {
		$name = $_POST["kullaniciadi"];
		$pass = $_POST["pass"];
		   $giris = "select * from admin where name='$name'and password='$pass'";
		   $getir = $connect->query($giris);  
		      if ($getir->num_rows>0) {
				  while ($row = $getir->fetch_assoc()) {
					  $_SESSION["ID"] = $row["id"];
					  header("location:yonetim.php");
				  }
			  }
	 }
 ?>
Cevap yaz
Cevaplar (9)
aydinkeskin
1731 gün önce

yonetim.php de login kaydını nasıl tutuyorsun ordaki kodları paylaşırmısın ordan seni direk atıyor olmasın.

brkmst67
1731 gün önce

evet aynı klasör içerisinde

https://hizliresim.com/fRBBW9

aydinkeskin
1731 gün önce

baglan.php ile yonetim.php aynı klasör içinde olduğuna eminmisin

brkmst67
1731 gün önce

direkt yapıştırıp denedim ancak sonuç aynı sayfada kalıyor :/

qplot
1731 gün önce

header("Location: yonetim.php"); tarzında denermısın

brkmst67
1731 gün önce
 <?php 
 error_reporting(0);
 session_start();   

 include "baglan.php";
	 if ($connect->connect_error) {
		 die ("Bağlantı Hatası Oluştu");
	 }
	 
	 if($_POST) {
		$name = htmlentities($_POST["kullaniciadi"]);
		$pass = htmlentities($_POST["pass"]);
		
		
		   $giris = "select * from admin where name='$name'and password='$pass'";
		   $getir = $connect->query($giris);  
		   
		   
		   
		      if ($getir->num_rows>0) {
		          
		          
				  while ($row = $getir->fetch_assoc()) {
				      
				      
					  $_SESSION["ID"] = $row["id"];
					  header("location:yonetim.php");
					  
					  
				  }
			  }
	 }
 ?>

Bu kodu denedim ancak aynı sayfana kalıp headerda verdiğimiz sayfayı açmıyor.

brkmst67
1731 gün önce

Bu projeye mysqli ile başladım onunla bir şekilde bitiricem artık . Ama şunu öğrendim ki bundan sonra kesinlikle pdo ile yapmam gerek :D

aydinkeskin
1731 gün önce

$user = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $gelendeger);

bu şekilde php tarafında regex ile de halledebilirsin.

tabi pdo kullanmanda önem arz ediyor mümkün mertebe query kullanma prepare ve bindparam ile işlemlerini hallet.

qplot
1732 gün önce
  1. mysqli değil pdo kullan
  2. değişkenleri direk sorgu içinde kullanma

en basiti htmlentities kullanmak

AYRICA ÜYELERE sql de yetki ataması yap misal 0 olan üye 1 olan yönetici olsun
ve sorguda bunu kontol et

 <?php 
 error_reporting(0);
 session_start();   

 include "baglan.php";
	 if ($connect->connect_error) {
		 die ("Bağlantı Hatası Oluştu");
	 }
	 
	 if($_POST) {
		$name = htmlentities($_POST["kullaniciadi"]);
		$pass = htmlentities($_POST["pass"]);
		
		
		   $giris = "select * from admin where name='$name'and password='$pass'";
		   $getir = $connect->query($giris);  
		   
		   
		   
		      if ($getir->num_rows>0) {
		          
		          
				  while ($row = $getir->fetch_assoc()) {
				      
				      
					  $_SESSION["ID"] = $row["id"];
					  header("location:yonetim.php");
					  
					  
				  }
			  }
	 }
 ?>

buda PDO hali

 <?php 
 error_reporting(0);
 session_start();   

 include "baglan.php";
	 if ($connect->connect_error) {
		 die ("Bağlantı Hatası Oluştu");
	 }
	 
	 if($_POST) {
		$name = htmlentities($_POST["kullaniciadi"]);
		$pass = htmlentities($_POST["pass"]);
		
		
		   $giris =$connect->("select * from admin where name=? and password=? AND yetki=1");
		   $getir->execute([$name,$pass]) 
		   $say=$getir->rowCount();
		    
		      if ($say==1) {
		          
		           $_SESSION["ID"] = $row["id"];
				   header("location:yonetim.php");
		     
			  }
	 }
 ?>