script yazımında bunlara dikkat edin ! - Sayfa 3 - Google Fan Webmaster Forum
Google Fan Webmaster Forum  

Geri git   Google Fan Webmaster Forum > Server Side Programlama > PHP
Kayıt ol Articles Sosyal Gruplar Forumları Okundu Kabul Et

PHP R10.net Php sevenler klubü. Kodlama soru(n)ları & acil php yardım hattı.

Like Tree4Likes

Cevapla
 
LinkBack Seçenekler
  21  
Alt 04-07-2008, 17:01:25
 
Standart

Aslıdna bu fonksiyon sorugya gidecek verileri bir nevi bir kaç testten geçirip html taglarını vs.. siliyor, dolayısıyla kötü niyetli bir kod düz texte çevrilip db ye yazılıyor. Aynı şekilde çok sıkça kullanılan PHP de SafeSQL classını bence inceleyin derim bu tür verileri irdeleyip sql de güvenlik açıklarının önüne geçen ve çeşitli kullanım kolaylıkları ile sizi bayagı bi if else kodlarından kurtaracak bir class..

ilgilenenlere duyrulur.
Alıntı ile Cevapla


Sponsored Links
  22  
Alt 08-07-2008, 18:19:01
Üyeliği durduruldu
 
Standart

teşekkürler.lazım olabilecek bir fltre
Alıntı ile Cevapla


  23  
Alt 09-07-2008, 14:48:01
Eposta Aktivasyonu Gerekmekte
 
Standart

ayrı yeten mysql_real_escape_string "/**/" gibi şeyleri escape etmiyor. dikkat etmekte fayda var.
Alıntı ile Cevapla


  24  
Alt 14-07-2008, 18:16:52
 
Standart

Sağlam kaynaklar oluşturduğunuz için teşekkürler
Alıntı ile Cevapla


  25  
Alt 16-07-2008, 13:12:18
 
Standart

Alıntı:
Bartuc Nickli Üyeden Alıntı Mesajı göster
benim her zaman kullandığım filtreleme fonsiyonu aşağıda, bununla filtreleseniz yeterli olur.
PHP- Kodu:
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}

benim her zaman kullandığım filtreleme fonsiyonu aşağıda (burada her zaman derken Dreamweaver CS3'ten sonra demek istediniz Galiba. Lütfen İnsanlara Bu Fonksiyonun MM ve Adobe Firmasının DWCS3 Ürünün Sunucu Bazlı Çalışmalarında Kullanılan Fonk. Olduğunu Belirtiniz.), bununla filtreleseniz yeterli olur. (Bununla Fitrelemek Bırak Yeterli Olmasını Güvenliğin G Sini bile Sağlayamazsınız.)

Şimdi konumuza Gelecek Olursak...
Bo yukardaki fonksiyonun ne kadar sağlıklı çalıştığını ele alalım...

Mesela GetSQLValueString($_POST['mesaj'], "text") diyelim..
Normalde bu GetSQLValueString Fonksiyonu ile Güvenliği Sağlanmış bir Veri Haline Gelmiş Olmazı Lazım Doğrumu?

Şimdi bu veriye <html> Etiketlerini Gonderdiğim gibi aynen veritabanına bu html (php, asp, cgi hepsini gonderebilirsiniz.) olarak kaydedecektir.

Sonraki Husus...
Bu Fonksiyonda mysql_real_escape_string ve strpthls gibi fonksiyonlar devre dışı kalıyor bazı durumlarda. Hangi Durumlarda Pekii? Tipini Belirttiğiniz Durumlarda Yani "text"i "int", "double" gibi fonksiyon içinde geçen stringlerde.

Kısacası bu fonksiyon sadece şu işe yarıyor : Belirttiğiniz Tipe göre veritabanına kayıt yapar yada yapmaz (bkz.GetSQLValueString($_POST['mesaj'], "text"))

Soru 1 : Pekii bu html etiketlerini nasıl temizleriz?
Cvp 1 : strip_tags($_POST['mesaj']); yada get mesaj.

Soru 2 : ben html kodlarını kaydetmek istiyorum ama sayfaya basarken html kodu gibi gorunsun istiyorum?
Cvp 2 : O zaman Şu şekilde temizleyeceksiniz htmlspecialchars($_POST['mesaj']); (direk html kodunu veritabanına alıp sayfaya basarken <code></code> yada <pre></pre> Etiketlerinin Arasına Alabilirsiniz.)

Soru 3 : Pekii bu \" Karekterlerini nasıl temizleriz?
Cvp 3 : mysql_real_escape_string($_POST['kullanici_adi']); , stripslashes($_POST['kullanici_adi'])

Soru 4 : Ben bu GetSQLValueString fonksiyonu kullanmadan veri tiplerini başka şekilde Belirleyebilir miyim?
Cvp 4 :Evet GetSQLValueString Fonksiyonunu Kullanmdan Yapabilirsinizi. MySQL Kullanıyorsanız Tablodaki alanların veri tiplerini belirleyebilirsiniz.

Soru 5 : Pekii Sadece integer (Tam Sayı) verileri için ne yapmalıyım?
Cvp 5 : Örnek veriyorum mesela sayfamız sayfa.php?id=12 ise bunu şu şekilde temizleriz. intval($_GET['id']);

vs vs vs...
Uzar Gider...

Dikkat ettim bu 3. sayfaya ulaşmış bi sürü insan tşk etmiş. işim e yaradı demiş şunu demiş bunu demiş. Ama işin enteresan tarafı kimse bu Fonksiyonlar için detaylı bilgi istememiş. Yani biri çıkıpta "Hocam bu mysql_escape_string ve mysql_real_escape_string'in arasındaki fark nedir yada bu fonksiyonların biraz detaylarını alabilirmiyiz" Diye Soran olmamış. İşte burada ise bilgisizkten gelen altyapı oluşumu başlar ve bu programcı adayını ilerki donemlerde cok ziyadesi ile rahatsız edecektir.

Şimdilik Diyeceklerim Bunlar Güvenlik Hakkında Yardım Almak İsteyen Arkadaşlar Bana (PM ile değil lütfen Forumda Herkes Yararlansın) Ulaşabilirler.

NOT : Yardım Ekibindeki Arkadaşlar Sağolsunlar Güzel Yardımcı oluyorlar kendilerine tşk. etmek lazım ama Dikkate alınması gereken hususları es geçrlerse yardımın bi faydası olmadığı gibi zararı olacaktır çunku öğrenmek isteyen kişi yanlış bilgiler edinmiş olacak.
Tekrar Teşekkürler.
Kolay Gelsin.
mzsahin, gotRoot and arkeyan26 like this.
__________________
İmza....

Konu Dogu_Bey tarafından (16-07-2008 Saat 13:27:05 ) değiştirilmiştir..
Alıntı ile Cevapla


  26  
Alt 23-07-2008, 05:45:09
 
Standart

Güzel Açıklama Olmuş.
__________________
Web Tasarım MyRize & Ahşap ev
Alıntı ile Cevapla


  28  
Alt 31-07-2008, 22:51:19
 
Standart

Teşekkürler
Alıntı ile Cevapla


  29  
Alt 22-08-2008, 04:05:35
 
Standart

teşekkürler.
__________________
PHP işleriniz yapılır...
Alıntı ile Cevapla


  30  
Alt 12-09-2008, 08:04:16
 
Standart

@Dogu_Bey;

Bu fonksiyonun dreamweaver'dan alındığını belirtmeye gerek duymadım. Kısaca yaptığı işi açıkladım ve ben hiç bir zaman bu fonksiyonun hata yaptığını, en azından SQL injection oluşturabilecek bir açık oluşturduğunu görmedim.

fonksiyonun içindeki kodları açıklamadım çünkü bu bir php tutorial değil. mysql'e veri girerken bu fonksiyon kullanıldığı sürece bir sorun/açık oluşmuyor. Bu da dikkat edilmesi gereken bir nokta olduğundan ben bu fonksiyonu insanlarla paylaşarak herhangi bir hata yaptığımı düşünmüyorum.

not: dw cs3'den beri değil, ilk kullandığım dw sürümü olan dw 6'dan beri bu fonksiyon dw'de mevcut. sadece eski dw'ler, otomatik oluşturulan recordsetlerde bu fonksiyonu kullanmıyordu.
Alıntı ile Cevapla


Cevapla


Bookmarks
tesxc
Seçenekler

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Açık



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 02:34:12.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.

“İnsanların en hayırlısı, insanlara faydalı olandır”. H.Ş

Hosting by Radore Hosting

İçerik sağlayacı paylaşım sitelerinden biri olan R10.net WebMaster Forum Adresimizde 5651 Sayılı Kanun’un 8. Maddesine ve T.C.K’nın 125. Maddesine göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. R10.net hakkında yapılacak tüm hukuksal Şikayetler adresi ile iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 1 (Bir) Hafta içerisinde R10.net yönetimi olarak tarafımızdan gereken işlemler yapılacak ve Avukatlarımız size dönüş yapacaktır.
ARGUS_OK