Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

GET güvenliği

ploop

0
Onaylı Üye
Üye
Katılım
11 Ekim 2004
Mesajlar
6,964
Açılan Konu
214
Tepki puanı
0
Konum
karavan
GET ile çekilen verilerin güvenilirliğini nasıl test ederiz? Örneğin bas harfe göre listelemede
$harf = $_GET["harf"];
ile çekiyorum. fakat adam her türlü değiskeni atayabilir. bunu nasıl engellerim? arastırdım herkes öğüt vermis süzgeçten geçirin diye ama nasıl geçireceğimizi yazmamıslar :p harf yoksa denetim yapılabilir (sanıyorum isset idi) belki, baska ne gibi güvenlik sakıncaları doğabilir?
 

ejder

0
Onaylı Üye
Üye
Katılım
10 Kasım 2003
Mesajlar
0
Açılan Konu
56
Tepki puanı
3
Konum
istanbul
$harf = $_GET["harf"][0];

denemedim ama sadece ilk harfi vereceğini düşünüyorum :)
 

ploop

0
Onaylı Üye
Üye
Katılım
11 Ekim 2004
Mesajlar
6,964
Açılan Konu
214
Tepki puanı
0
Konum
karavan
vov bu harika oldu valla :)
not: mysql_escape_string gibi seyler eklememe gerek var mı acep. (veri çektiğim için gerek olmadığını düsünüyorum, eğer gerek varsa nedenini de açıklarsanız çok güzel olur.)
 

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
PHP:
function sanitize() {

  foreach ($_POST as $key => $value) {
  $_POST[$key] = htmlspecialchars(addslashes($value));
  }

  foreach ($_GET as $key => $value) {
  $_GET[$key] = htmlspecialchars(addslashes($value));
  }

}

Böyle bir fonksiyonu config'e koyup, her sayfa başına sanitize(); diye çağırabilirisin. HTML kodu ve tirnaklara karşı.

addslashes yerine mysql_real_escape_string iyi olur hatta evet.
 

ploop

0
Onaylı Üye
Üye
Katılım
11 Ekim 2004
Mesajlar
6,964
Açılan Konu
214
Tepki puanı
0
Konum
karavan
ejder'in önerisinden sonra gerek var mı Angelo? Bir de ben POST komutunda dediğin süzme islemini yapıyorum, ama GET yaparken bunu yapmanın manasını hala anlamıs değilim. Nasıl olsa Mysql'den veri çekiyoruz, sitemize ne gibi bir zarar verebilirler?
 

ploop

0
Onaylı Üye
Üye
Katılım
11 Ekim 2004
Mesajlar
6,964
Açılan Konu
214
Tepki puanı
0
Konum
karavan

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
O 1. harf mantığı doğru tabi. Ama mesela index.php?id='A böyle birşey yapacak adam var mıdır veya yapsa ne işe yarar? Yaramaz tabi, ama o filtrelemeler daha genel ve herşey için geçerli.

URL=
index.php?id=1

SORGU=
$q = mysql_query("SELECT * FROM kullanicilar WHERE id='$_GET[id]'");

magic_quotes konfigurasyonuna göre de değişir ama mesela
index.php?id=' OR id='1
dediğimizde ne olacak bunu düşünmek lazım
 

ploop

0
Onaylı Üye
Üye
Katılım
11 Ekim 2004
Mesajlar
6,964
Açılan Konu
214
Tepki puanı
0
Konum
karavan
benim sorgum su sekilde:
$sorgu = mysql_query("select x,y from sanatcilar where kategori=1 and baslik LIKE '$harf%'");
henüz 1 haftalık php öğrencisiyim, bu yüzden inciğini cinciğini bilmiyorum fakat, bu sorguda adam o $harf yerine tek karakterlik ne koyarsa koysun sorun olmaz gibi geliyor sanki bana. senin verdiğin örnekte de mesela birden fazla karakter var, ejderin eklemesi sanıyorum bu sorunu çözüyor. zaten sanıyorum ki bana bilgi vermek için yazdın :) ama mantığını anladım çok sağolasın. bu sekilde bırakıyorum o zaman :p
 

Angelo

0
Onaylı Üye
Üye
Katılım
13 Aralık 2004
Mesajlar
9,603
Açılan Konu
164
Tepki puanı
106
Konum
AZ
Evet bu uygulama için yeterli.
 

H@run

0
Onaylı Üye
Üye
Katılım
29 Ağustos 2006
Mesajlar
698
Açılan Konu
35
Tepki puanı
0
ploop php yi kitabdanmı öğreniyorsun kursmu alıyorsun ?
 

ploop

0
Onaylı Üye
Üye
Katılım
11 Ekim 2004
Mesajlar
6,964
Açılan Konu
214
Tepki puanı
0
Konum
karavan
php.net, ceviz forum ve iyinet'in php forumunu okuyorum vs. kendi isimi görecek kadar yapabiliyorum zaten kolay geldi :p
 
Üst