İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

GET güvenliği

ploop

0
İyinet Üyesi
Katılım
11 Ekim 2004
Mesajlar
6,964
Reaction score
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
İyinet Üyesi
Katılım
10 Kasım 2003
Mesajlar
0
Reaction score
4
Konum
istanbul
$harf = $_GET["harf"][0];

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

ploop

0
İyinet Üyesi
Katılım
11 Ekim 2004
Mesajlar
6,964
Reaction score
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
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
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
İyinet Üyesi
Katılım
11 Ekim 2004
Mesajlar
6,964
Reaction score
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
İyinet Üyesi
Katılım
11 Ekim 2004
Mesajlar
6,964
Reaction score
0
Konum
karavan

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
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
İyinet Üyesi
Katılım
11 Ekim 2004
Mesajlar
6,964
Reaction score
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
 

H@run

0
İyinet Üyesi
Katılım
29 Ağustos 2006
Mesajlar
698
Reaction score
0
ploop php yi kitabdanmı öğreniyorsun kursmu alıyorsun ?
 

ploop

0
İyinet Üyesi
Katılım
11 Ekim 2004
Mesajlar
6,964
Reaction score
0
Konum
karavan
php.net, ceviz forum ve iyinet'in php forumunu okuyorum vs. kendi isimi görecek kadar yapabiliyorum zaten kolay geldi :p
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst