

Güvenlik Açığı WCF SERVİCES (ANDROİD/WCF/HTTP RESTFULL)
-
Müridler WCF Servisi örneğin URiTemplate si OrnekJSON/?username={username}&password{password} olsa
Android de de http://11.51.129.17/MyService.svc/OrnekJSON/username=" +username+ "&password=" +password göndersem Güvenlik açığı olur mu ?
Koda dökersek
String username="Ahmet",password="1234";
String LoginUrl="username=" +username+ "&password=" +password;
Url myUrl=new Url(" http://11.51.129.17/MyService.svc/OrnekJSON/" +LoginUrl);
Olarak bir Restfull gönderdim diyelim ... Bu benim programının güvenliğini azaltır mı ?
Bunu Metod Adını ekleyerek de daha kullanışlı hale getirebilirim ama güvenlik sıkıntısı olabilir diye düşünüyorum ...
EDİT : Mühendislik kazandık fakat hala 2 cümle kuramıyoruz.... Umarım anlatabilmişimdir :(
MhmdAlmz tarafından 22/Ara/15 15:28 tarihinde düzenlenmiştir -
Hocam tavsiye vereyim kendimce
1 - username ve password u sifreleyerek gonder. Encryption yap ve servis tarafinda decrypt ederek denetle
2 - Deri token gonder ve session id bunlari kullanarak devam et.
3 - 2-3 defa yanlis sifre girildiginde kilitle acilamasin
4- Ayrica url olarak username=12321&password=123123 yerine atiyorum I#^%$G#dI^GI#D&^TH#IT8i gibi bisey gonderip bunu once servis tarafli cozumleyip sonra decrypt edebilirsin.
Aklima ilk gelenler bunlar
-
dhmm bunu yazdı
Hocam tavsiye vereyim kendimce
1 - username ve password u sifreleyerek gonder. Encryption yap ve servis tarafinda decrypt ederek denetle
2 - Deri token gonder ve session id bunlari kullanarak devam et.
3 - 2-3 defa yanlis sifre girildiginde kilitle acilamasin
4- Ayrica url olarak username=12321&password=123123 yerine atiyorum I#^%$G#dI^GI#D&^TH#IT8i gibi bisey gonderip bunu once servis tarafli cozumleyip sonra decrypt edebilirsin.
Aklima ilk gelenler bunlar
Mantıklı ama şifreleyerek göndersembile javada projeler decompile edilebiliyor şifreleyerek göndeirsem adam kodu kopyalayıp aynı şifreleme ile tekrar veriyi gönderip sonuçları çekebilir serviste session olabilir 3. denemede gümlesin 10 dk giriş yapamasın mesela o dediğiniz !#+'^gibi özel karakterler zaten engelli olması lazım o zaman sağlıklı bi program olmaz :) Benim sıkıntım sonuçta http bi request yapıyoruz adam bi program yazıp sonsuz döngü yani bilmem kaçın kaçlı kombinasyonu ile bütün kullanıcı verilerini çekebilir o yüzden sorun var :/
-
Hocam bu talepleri karşılama meselesinde bir şey göndermeden de alabileceğin değerler var mı?
Mesela web tarafında, ziyaretçinin ip adresi, tarayıcı bilgisi vs.. gibi şeyleri adres satırında felan taşımadan alabiliyoruz. Varsa böyle bir özellik onları kullanmaya çalışsan.
Yani, spesifik bir şey yakalamak gibi.
-
ontedi bunu yazdı
Hocam bu talepleri karşılama meselesinde bir şey göndermeden de alabileceğin değerler var mı?
Mesela web tarafında, ziyaretçinin ip adresi, tarayıcı bilgisi vs.. gibi şeyleri adres satırında felan taşımadan alabiliyoruz. Varsa böyle bir özellik onları kullanmaya çalışsan.
Yani, spesifik bir şey yakalamak gibi.
Sanırım Login kısmını SQL de log tablosuna kaydedip sürelere bakmak gibi mi yani örneğin Ahmet kullanıcısı 01/02/2015 saat 20 de 10 u 45 geçe giriş yaptı mesela 15 saniyelik bir engel mi koymamı kastettiniz ?
-
Aslında wcf nedir açıkcası onu bilmiyorum. Şuan mesela A sayfasından B sayfasına tıklayarak gittin diyelim. Ve bizde B sayfasında
string nereden_geldim =
Request.ServerVariables["http_referer"]Diyerek geldiğimiz sayfayı bulabiliriz (Yani A sayfasını). Geldiğimiz sayfaya göre manüplasyonlar yapabiliriz.Dilim döndüğünce anlatmaya çalıştım -
MhmdAlmz bunu yazdıdhmm bunu yazdı
Hocam tavsiye vereyim kendimce
1 - username ve password u sifreleyerek gonder. Encryption yap ve servis tarafinda decrypt ederek denetle
2 - Deri token gonder ve session id bunlari kullanarak devam et.
3 - 2-3 defa yanlis sifre girildiginde kilitle acilamasin
4- Ayrica url olarak username=12321&password=123123 yerine atiyorum I#^%$G#dI^GI#D&^TH#IT8i gibi bisey gonderip bunu once servis tarafli cozumleyip sonra decrypt edebilirsin.
Aklima ilk gelenler bunlar
Mantıklı ama şifreleyerek göndersembile javada projeler decompile edilebiliyor şifreleyerek göndeirsem adam kodu kopyalayıp aynı şifreleme ile tekrar veriyi gönderip sonuçları çekebilir serviste session olabilir 3. denemede gümlesin 10 dk giriş yapamasın mesela o dediğiniz !#+'^gibi özel karakterler zaten engelli olması lazım o zaman sağlıklı bi program olmaz :) Benim sıkıntım sonuçta http bi request yapıyoruz adam bi program yazıp sonsuz döngü yani bilmem kaçın kaçlı kombinasyonu ile bütün kullanıcı verilerini çekebilir o yüzden sorun var :/
Hocam compile decompile algoritman degiskenlik gostersin. Servis tarafli veritabaninda tut belirli sifreleme yontemlerini ve keywordleri. Kodla birlikte veritabanini da almasi lzm.
Hocam eger 3 yanlis giris olursa adami banla. Bunu disinda 3x3 yanlis denemede hostname/ip banla daha giremesin. Seni arasinlar gel ac diye.
Sonra aklima gelirse daha yazarim simdi kaciyom
(&^(*& a gelice :) attim iste.
-
ontedi bunu yazdı
Aslında wcf nedir açıkcası onu bilmiyorum. Şuan mesela A sayfasından B sayfasına tıklayarak gittin diyelim. Ve bizde B sayfasında
string nereden_geldim =
Request.ServerVariables["http_referer"]Diyerek geldiğimiz sayfayı bulabiliriz (Yani A sayfasını). Geldiğimiz sayfaya göre manüplasyonlar yapabiliriz.Dilim döndüğünce anlatmaya çalıştımYok hocam bu farklı siz sayfalar arası geçişten bahsediyorsunuz servis mantığı farklı :/ tam olarak web sayfası değil
-
Hayır, get ile göndersen de post ile göndersen de aşağı yukarı aynı şeydir. Güvenlik açığı olarak neden bahsediyorsunuz? Biz nasıl tahribata giriyorsak aynı şey kısacası.
Nasıl bir güvenlik lazım? DoS falan ise yapmanız gereken donanım tabanlı çözümler ve ip filtreleme.
Tek seferlik bir servis değilse (örneğin ilk kimlik doğrulamadan sonraki diğer kimlik doğrulaması gerektiren işlemler için oturum sağlanıyorsa) kimlik doğrulaması için bir token göndermeniz daha iyi olur.
-
Encrypt et yolla
-
YeniHarman bunu yazdı
Hayır, get ile göndersen de post ile göndersen de aşağı yukarı aynı şeydir. Güvenlik açığı olarak neden bahsediyorsunuz? Biz nasıl tahribata giriyorsak aynı şey kısacası.
Nasıl bir güvenlik lazım? DoS falan ise yapmanız gereken donanım tabanlı çözümler ve ip filtreleme.
Tek seferlik bir servis değilse (örneğin ilk kimlik doğrulamadan sonraki diğer kimlik doğrulaması gerektiren işlemler için oturum sağlanıyorsa) kimlik doğrulaması için bir token göndermeniz daha iyi olur.
Hocam Örneğin burdan kullanıcı giriş yapacak ya ... giriş yaparken bu postu yapacak adam sıra sıra kullanıcıları karakter cinsinden gönderip bütün kullanıcı adı şifreyi çekmez mi ? yani dönüş değerine göre kullanıcı var yok diyip giriş yapacak adam Get post yaparak kullanıcı adı ve şifreleri çekebilir birde bu şekilde veritabanına sınırsız veri ekleyebilir... ondan bahsediyorum :/