"Unable to start debugging on the web server" Hatası

31 Aralık 2007

Arkadaşlar 2007 nin son yazısını makalesini yazıyorum. Öncelikle 2008 e girerken hepinize huzur, sağlık ve mutluluk dolu seneler diliyorum.

Hata Mesajı:

"Unable to start debugging on the web server. Debugging faild because integrated Windows authentication is not enabled. Please see Help for assistance."


Hata sebebi:

IIS deki projenizin dizin güvenliği ile ilgili bir sorun. Anonim erişimlerde "windows etki alanı sunucuları için özet kimlik doğrulamasına izin verilmediği" için bu hata ile karşılaşılır.

Çözüm:

1. Adım: IIS yönetim ekranını açın (Çalıştırdan inetmgr yazın, karşınıza IIS yönetim ekranı çıkacaktır.) ordan hatayı aldığınız siteyi seçiniz. Üzerine sağ tıklayarak Properties i seçin.

2.Adım: Directory Security(Dizin Güvenliği) sekmesine girin. Anonymous Authentication and authentication control (Anonim Erişim ve doğrulama denetimi) bölümdeki Edit(Düzenle) butona tıklayın.

3. Adım: Oradan Integrated Windows Authentication 'u işaretli yapın (checked yapın)

4. Adım: OK bastınız mı sorun çözülüyor.

Kolay gelsin. İyi seneler...

DataList de QueryString ile Alfabetik Sayfalama

18 Aralık 2007


Bu makalemizde DataList kontrolünde alfabetik sayfalama yapacağız. Gridview da wizardlarla verileri çektiğimiz zaman bize sayfalama özelliğinide sağlıyor fakat datalistte verileri wizardlarla bile çeksek bize sayfalama özelliğini kendisi vermiyor. Bazen verileri göstermek için datalist kontrolünü kullanmamız gerekebilir, ve bu durumda bir sayfada ya 1000 tane kaydı bir anda göstereceğiz ki bu hiç tavsiye edilmez yada alfabetik veya numeric olarak sayfalamak için kodlarımızı kendimiz yazacağız.

Biz bu makalemizde alfabetik sayfalama yapacağız. Bunun için alfabetik linklerimizi oluşturacağız ve linke tıklandığında seçilen harfle başlayan kayıtları getirebilecek metodumuzu yazacağız.
İlk olarak DataListin içini doldurmak için metodumuzu yazıyoruz.




Kayıtlarımızın datalist kontrolünde görünmesi için html kodlarımızı da yazıyoruz.



Seçilen harfle başlayan kayıtların getirilmesi için çağrılacak metod.




Datalist in footer template kısmına harfleri seçebilmek için alfabetik linklerimizi oluşturuyoruz.



Link olarak hyperlink kontrolünü kullanacağız, ve hangi harfi seçerse o harfi yine aynı sayfaya querystring le gönderiyoruz.



Sayfamız ilk çalıştırıldığında bütün kayıtları listeliyoruz.
Eğer linke tıklanılıp çağrılmışsa zaten seçilen harfi querystringle gönderip metotta parametre olarak alıyoruz.



Şimdi herhangi bir harfi seçelim.



Böylelikle bir makalemizin daha sonuna geldik. Bir başka makalemizde görüşmek dileğiyle.

Alıntıdır - Yazar: Veysi Sala

SQL Injection - Injection Flaws

Injection Flaws

Dinamik SQL sorgularının kullanıldığı sistemlerde oluşabilecek bir açıktır.

Bir kullanıcı adı parola sınaması yapılan SQL cümleciğinde kullanılabilir.

Select MemberID
From Member
Where Username = '"
+ txtUsername.Text + "' and Password = '" + txtPassword.Text + "'"

Şeklinde bir SQL cümlesinin kullanıldığı bir sistemde aşağıdaki ifadeleri girelim

txtUsername.Text : ' or 1=1 --
txtPassword.Text : 123

ifadesi aşağıdaki SQL cümlesinin çalıştırılmasını sağlar

Select MemberID
From Member
Where Username = ' ' or 1=1
-- ' and Password = '" + txtPassword.Text + "'"
-- ifadesi SQL Server için yorum satırı anlamına geldi için çalıştırılmaz.

Where ifadesini inceleyelim :

Username = ' ' false döner, 1 = 1 ise true. Or karşılaştırmasında ise False or True’nun sonucu true’dur. Dolayısıyla doğru kullanıcı adı parola girilmese dahi geriye tüm kayıtlar döner ve saldırgan ilk kaydın yetkisi ile içeriye giriş yapmış olur.

Saldırgan “SQL Injection” yöntemi ile veritabanı hakkında daha detaylı bilgi edinebilir. SQL Server üzerinde System Administrator hesabı açabilir, Tüm Tabloların listesini ve bu tabolardaki bilgilere ulaşabilir. Hatta web uygulaması sa yetkisine sahip bir kullanıcı ile çalıştırılıyorsa xp_cmdshell ‘format C:’ ile sisteme format bile atabilir.


Dinamik SQL sorgularındaki bu içeri sızmaları engellemenin yolu parametre kullanmaktır.

Bunu SqlCommand nesnesine SqlParameter tipinde parametre ekleyerek yapabiliriz.

SqlConnection conn = new SqlConnection();
conn.ConnectionString = "[ ConnectionString ]";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = " Select MemberID"
+ " From Member"
+ " Where Username = @username and Password = @password";
cmd.Parameters.AddWithValue("@username",txtUsername.Text);
cmd.Parameters.AddWithValue ("@password",txtPassword.Text);
conn.Open();
int MembetID = Convert.ToInst32(cmd.ExecuteScalar());
conn.Close();

Bu şekilde kullandığımız dinamik SQL sorgularında Injection yönetimini bertaraf etmiş oluruz.



Kaynaklar

http://www.owasp.org/index.php/Top_10_2007-A2
http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf
http://www.mutasyon.net/makaleoku.asp?id=728

Kötü Niyetli Dosya Çalıştırma

Kötü Niyetli Dosya Çalıştırma


Web uygulamanıza FileUpload ile dosya yüklemesi yapmak durumunda iseniz gelen dosyanın türünü mutlaka denetlemek gerekir. Örneğin bir Forum uygulaması yaptınız ve kullanıcılar kendi resimlerini resimler klasörüne upload edebilmekteler. Saldırgan hazırlamış olduğu bir asp sayfasını resimler klasörüne upload eder ve www.siteniz.com/resimler/foo.asp şeklinde tam yolu yazarak dışardan göndermiş olduğu bir dosyayı sisteminizde çalıştırabilir.


Bu şekilde sisteminizin izin verdiği ölçüde yeni dosyalar oluşturabilir. Örneğin anadizinde ki default.aspx dosyasını silip yerine bir default.asp dosyası oluşturabilir. Böylece siteniz açıldığında “hacked by hacker ana” yazısı ile karşılaşabilirsiniz.


Böyle üzücü durumların yaşanmaması için sisteminize upload edilen dosyaların türünü denetlemek gerek.


Bunun için System.IO.Path ve System.Text.Regex namespacelerinden yararlanacağız.

Önce upload edilen dosyasın uzantısı nı alacağız ve kabul ettiğimiz dosya türleri içerisinde olup olmadığını denetleyeceğiz.

string uzanti = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName);
System.IO.Path.GetExtension metodu uzntıyı bize “.jpg” gibi noktalı bir şekilde verir.


Kullanıcı tarafından gönderilen dosya ismi büyük harfler ile yazılmış olabilir. Buda birazdan yapacağımız karşılaştırmada farklıymış gibi algılanmasına sebep olur. Bu yüzden uzantı harflerini küçültelim.

uzanti = uzanti.ToLower();

Kabul edeceğimiz dosya uzantıları için teker teker if kontrolü yazmamak için Regular Expression ifadelerinden yararlacağız.


using System.Text.RegularExpressions;
.....
if(Regex.IsMatch(uzanti,".jpg.jpeg.gif.png.bmp") == false)
{
// gönderilen dosya formatı uygun değil
}
else
{
// gönderilen dosya formatı uygun.
}


Önemli bir konu. Umarım faydalı olmuştur.


Kaynak

http://www.owasp.org/index.php/Top_10_2007-A3

Generic Nedir? Bildirimi ve Kullanımı

10 Aralık 2007

Generic Nedir?

Türkçe kelime karşığı olarak “kendi cinsine ait özellikleri taşıyan” anlamına gelen Generic kavramı .Net Framework 2.0 ile birlikte gelen en güçlü yeniliklerden birisidir. Generic’ ler güvenli tipte veri yapıları oluşturmamızı sağlar ve bunun sonucu olarak performansı ve yazdığımız kodun kalitesini artırır. Bir veri işleme algoritmasını herhangibir sınıfa özgü olacak şekilde tasarlamak ve yazmak; aynı algoritmayı farklı şekilde tasarlayabilecegimiz başka sınıflar da varsa fazladan kod yazmak anlamına gelecektir. Generic kavramı bir veri işleme algoritmasının birçok tip tarafından type-safe bir şekilde kullanılmasını sağlar. .NET Framework 2.0 ile birlikte gelen generic, kavram olarak C++ ‘da bulunan template kavramına benzemektedir, fakat yetenekleri ve uygulama alanı açısından bakıldığında C++’daki template kavramından oldukça üstündür.

Programlama açısından bakıldığında stack(yığıt) , array ve arraylist gibi yapılar çok fazla kullanılan veri yapılarıdır. NET Framework 1.1 kütüphanesi ile gelen stack kavramı object sınıfının temelleri üzerine kurulmuştur. Aynı şekilde bir ArrayList nesnesi içerisindeki içsel sınıf mekanızması object sınıfı üzerine kurulmuştur. Arraylist ve stack sınıfının içerisinde barındırdığı veri yapıları object sınıfından birer nesne gibi davranış gösterirler, ancak object sınıfından türemiş nesneler herhangi bir özelliği olmayan nesnelerdir.


Generic sınıfların avantajları :

  • compile-time ve run-time esnasında tip güvenliğini etkin bir şekilde sağlar. Değer tipleri için box ve unbox işlemi yapılmaz ve performans artışı oldukça yüksek düzeye çıkmaktadır. Aynı şekilde referans tipleri için cast işlemine gerek kalmamaktadır.
  • Oluşturduğumuz generic bir sınıfı .Net kütüphanesinde bulunan bütün tipler ve kendi oluşturduğumuz veri yapıları için kullanabilmekteyiz
  • Test işlemleri generic sınıfı için yeterli olacaktır.
  • Yazılan uygulamada kodun şişmesi önlenmiş olur, kodun tekrar kullanılabilirliği artar ve bileşen (component) temelli yaklaşım için oldukça avantajlı bir yeniliktir.

Generic Sınıfların Bildirimi & Kullanılması

Generic sınıfların bildiriminde sınıf isminden sonra < > işaretleri arasında tür parametresi belirtilir. Generic bir sınıf bildiriminin genel biçimi şöyledir :

class Sınıf_İsmi <Tür_Parametresi>
{
// ...
}

Tür parametresi; bildirim sırasında herhangi bir türün karşılığı olmayan ve çoğu zaman T, G, AD gibi bir yer tutucudur. Bu yer tutucu(lar) sınıfın kullanımı noktasında bir tür belirtilmesi ile anlam kazanır(lar). Örneğin;


class Sample <T>
{
// ...
}

//...

public static void Main()
{
Sample <int> obj = new Sample <int> ();
}


Yukarıdaki örnekte bildirim sırasında tür parametresi olarak kullanılan , sınıfın kullanımı noktasında türünün belirtilmesi ile anlam kazanmıştır.

NOT : Terminolojide Sample gibi tanımlanan türler; constructed type biçiminde adlandırılmaktadır !

Çok tipli generic sınıfların bildiriminde birden fazla tür parametresi kullanılabilir.

örneğin :

class Sample <AB, CD>
{
// ...
}

// ....

public static void Main()
{
Sample <int, string> obj = new Sample <int, string> ();
}
Bu örnekte ise; AB -> int , CD -> string türlerinin karşılığı olmuşlardır.

Kolay gelsin...

Remoting Semineri

07 Aralık 2007


Etkinlik Konusu : Remoting Semineri
Etkinlik Türü : Seminer
Kontenjan : 100

Etkinlik Tarihi - Saati : 11.12.2007 -- 13.00 - 16.00
Süre : 1 Gün
Eğitimi Veren : Aykut TAŞDELEN
Etkinlik Yeri : Yıldız Teknik Üniversitesi Konferans Salonu

ETKINLIK IÇERİĞİ


Remoting
, Microsoft'un yeni nesil RPC (remote procedure call) teknolojisine verilen isimdir. Microsoft'un kurumsal iş uygulamalarının geliştirilmesi için çok önemli olan ancak çok da fazla bilinmeyen bu teknolojisini, Microsofttan 4 ez üst üst MVP ünvanı alan ve INETA (Uluslararası .NET Birliği) MEA Bölge Başkanı olan Aykut TAŞDELEN'in anlatımı ile öğrenebilirsiniz.

Seminerde ele alınacak konu başlıkları:

Remoting Nedir ?
Dağıtık uygulamalara giriş
Daha önce kullanılan teknolojiler. DCOM, CORBA, RMI
.NET ve dağıtık uygulama geliştirme
Channel Formatter kavramları
Aktivasyon Proxy kavramları
Lease-Based Lifetime
Object Marshaling
SAO ve CAO nesne modelleri

Veritabanı Yönetim Sistemi ve SQL Komutları

30 Kasım 2007

Veritabanı Yönetim Sistemi ve SQL Komutları

Veritabanı Yönetim Sistemi ,aşağıdaki işlemlerden sorumludur;

• Bir veritabamndaki veriler arasında ilişkiler kurmak
• Verileri hatasız bir şekilde saklamak ve veriler arasında tanımlanan ilişkileri bozmamak
• Bir sistem hatası durumunda tüm verileri kurtarabilmek

Bu DERSTE temel Sql komutları ile veritabanını sorgulayarak veri alma, sıralama, çift kayıtları eleme, sonuçların formatlarıni değiştirme işlemlerinin nasıl yapıldığını yazmak istedim. sql hakkında fikir sahibi olanlar bu başlığı geçebilirler.

Sql ifadelerinin kullanımı :

Select ifadesini kullanmadan önce hangi veritabanı ve tablolar ile işlem yapacağımızı bilmeliyiz. Verilerle işlem yapmadan önce bazı komutlarla bu verilerin çekilmesi gerekmektedir. Bu komutlara sql ifadesi diyoruz. Select ifadesi ile seçmek istediğiniz kolon ve satırları belirtebilirsiniz.Select ifadesi veritabanından bilgi çekmek için kullanılır. Select ifadesi ile istediğiniz kolan ve satırları belirtebilirsiniz.

• Select ifadesi istenen satırları bir liste şeklinde verir.
• WHERE ifadesini kullanarak sorgunuzu fîltreleyebilir ve sadece sizin kriterlerinize uygun satırların sorgu sonucu olarak gelmesini sağlayabilirsiniz. Bu kriterler lojik ifadeler, karşılaştırmalar olabilir.
FROM ifadesi bu verilerin alınacağı tablo isimlerini belirtmemizi sağlar.

select *from ogrenciler
deyimi ile öğrenciler tablosundaki veriler getirilir.

Insert : Veritabanına Yeni bir Kayıt eklemek için kullanılır.

insert into ogrenciler(adi,Nosu) values (‘emrah’ ,’030202007’)
Şeklindeki bir ifade, isimler tablomuzun “adi” ve “Nosu” alanlarına yeni değerleri ekler.

Update : Veritabanındaki kayıtları güncellemek için kullanılır.Hangi kayıtların güncelleneceği,yine,bir koşul veya koşullarla belirtilebilir.

update ogrenciler set adi=’Emrah’ where Soyadi=’Aslan’
Şeklindeki bir ifade,soyadi “Aslan”olan kayıtların ad verisinin “Emrah” olarak değiştirir.

Delete : Adından da anlaşılacağı gibi tablodan kayıt silmek için kullanılan bir ifadedir.

delete from ogrenciler Where Soyadi=’Aslan’
İfadesi “soyadi” değerleri “Aslan” olan tüm kayıtlari siler.

Her Ne Kadar “WHERE” koşulu opsiyonel gözüküyorsa da, pratikte mutlaka kullanılması gerekir.

VERİ SÜZME

Zaman zaman ihtiyacınız olan verileri fıltrelemek isteyebilirsiniz. Verilerinizi Where ifadesinden sonra kullanacağınız bazı koşullar ile fütreleyebilirrsiniz. Bu koşullar şunlardır;

* Karşılaştırma operatörleri =, >, <, >=, <=, <>
* String karşılaştırmalar LIKE ve NOT LIKE
* Lojık operatörler AND, OR
* Lojik operatörler (Negatif) NOT
* Değer aralıkları BETWEEN ve NOT BETWEEN
* Değer listeleri IN ve NOT DM
* Bilinmeyen değerler IS NULL ve IS NOT NULL


Karşılaştırma operatörlerinin kullanımı:

Karşılaştırma operatörleri ile tablodaki bir veri ile belirlenmiş bir veri veya hesaplanmış veri karşılaştınlabilir. Fakat karşılaştırmak istediğiniz alan ve verinin tipleri aynı olmalıdır. Sayısal bir ifadeyi tarih ifadesi ile karşılaştıramazsınız. Burada kullanılan operatörler;

= Eşittir
> Büyüktür
< Küçüktür
>= Büyük veya eşittir
<= Küçük veya eşittir

Lojik operatörler :

Birden fazla kriterleri bir arada kullanmamıza yardımcı olurlar. AND operatörü kullandığımız takdirde verdiğimiz tüm koşullara uyan kayıtlar gelir. OR operatörü kullandığımız takdirde verdiğimiz koşullardan birine uyanlar gelir. NOT kullandığımızda ise NOT dan sonraki koşulu sağlamayan kayıtlar gelir. Birden fazla koşul kullandığımız durumlarda parantezi koşullan gruplamak için kullanabiliriz. Böylece daha okunaklı olur ve gruplama işlemini yapabiliriz.

Değer aralıkları:

BETWEEN ifadesini Where ile beraber kullanarak belli bir değer aralığmdaki kayıtlan getirebiliriz. Between ifadesi ile belirlenen aralık dışında kalan verileri almak için NOT BETWEEN kullanabiliriz. Between ifadesinde verilen aralığın bir bitiş noktası olmadır. Between ile verilen aralık (10 and 20) aslında AND ifadesi kullanılmı ve büyük eşittir, küçük eşittirden oluşan bir koşuldur. Bunu kısaca between ifadesi ile yapmaktayız.

Örneğin (KOD BETWEEN 10 AND 20) aslında ((KOD>=10) AND (KOD<=20)) demektir.

Bilinmeyen Değerler :

Veri girişi sırasında tablodaki kolona veri girilmemiş olabilir ve default veri de atanmamış olabilir. Bu durumda bu kolondaki değer NULL'dur. Null değer 0 (nümerik) veya boşluk (string) ile aynı şey değildir. Bir alana değer girilmemiş kayıtları listelemek isin IS NULL ifadesini kullanabiliriz. Null ifadesini diğer koşullar ile kullanamayız. Yani >Null diye bir şey diyemeyiz. Kolonlar Null değer içerebilir tanımını tablo yaratırken yapabiliriz.

Gizli servisler yıllardır bu siteyi bekliyordu

23 Kasım 2007


facebook sitesi artık paranoya nedeni! Sayfanızdaki kişisel bilgiler istihbarat örgütlerinden dolandırıcılara kadar herkesin ilgisini çekiyor

Fenomen arkadaşlık sitesi facebook, TÜBİTAK’ın bile gündeminde! Site hakkında araştırma yapan Emre Mineoğlu, sonuçları TÜBİTAK’ın Bilim ve Teknik dergisinde anlattı:

BAŞKASI SÖYLESE PARANOYA NEDENİ: İstihbarat örgütlerinde size ait bir dosyanın bulunduğunu söylemiş olsalardı... Ve o dosyada birçok resminizle beraber hangi okullara gittiğiniz, hangi işlerde çalıştığınız ve çalışmakta olduğunuz, kimlerle arkadaşlık ettiğiniz, nerelere gittiğiniz, resimlerle belgelenmiş olsaydı... Panikle ne yapacağınızı şaşıracağınıza kuşku yok. Ancak şu anda internetin sunduğu nimetlerin sonuncusu olan

‘facebook.com’ adlı sitede, kendi rızasıyla yapan yaklaşık 48 milyon kişi var.

1 MİLYON TÜRK KULLANICI VAR: facebook bize gösteriyor ki; toplumsal anlamda aidiyet ve gizlilik olguları yeniden tanımlanıyor. İnternette yaşanan hızlı gelişmeler, toplumsal değişim ve dönüşümün gelecekte nasıl yaşanacağı hakkında ipuçları verir nitelikte. Facebook, aynı zamanda sosyal bilimciler için de devasa bir laboratuvar. 1 milyon Türk kullanıcı sayısıyla ülkemizde de çok ciddi bir kullanıcı potansiyeli oluşturuyor.


Dikkat! Arkadaşınızı da yakmayın!

TÜRKİYE Bilişim Derneği (TBD) Yönetim Kurulu Üyesi avukat Mehmet Ali Köksal, Bilim ve Teknik dergisinin yayımladığı haber sonrası merak edilen konuları aydınlattı:

BİR ANDA SORGUYA: İnsan ilişkilerinde kimin kiminle nereden tanışık olduğu istihbarat birimlerinin en çok merak ettiği konulardan. Kullanıcılar, facebook sayesinde bu ilişkileri herkese açıyor. Yıllardır görüşemediğimiz arkadaşlarımızı bu sistem sayesinde bulmak güzel. Fakat o kişinin hatası ya da sevabı yüzünden sorgulanmak, ilginiz olmayan olaylara resmi makamlar ya da basın karşısında adınızın karışması güzel olmasa gerek.

TİCARİ BİLGİLER, BÜYÜK ŞİRKETLERDE: Bu bilgilerin pazarlayacağından bahsediliyor. Verilen bilgiler kullanıcıya reklam olarak dönecek.

KOŞULLARINI KABUL EDİYORSUNUZ: Maalesef tüm uyarılara rağmen TBMM’den kişisel bilgilerin korunması ve gizliliği konusuda beklenen tasarı çalışması tamamlanıp yasalaşmadı. Ayrıca hâlâ Türk Ceza Kanunu’nun 135’inci maddesinde kişisel verilerin kaydedilmesine ilişkin bir düzenleme var. Ancak bu düzenleme yeterli değil. facebook olayına da uygulanması mümkün değil. Çünkü, siteye girebilmek için facebook’un anlaşmasını kabul etmeniz gerekiyor.


Kredi kartı numaranızı küçük hileyle kapabilirler

BİLİŞİM suçları konusunda çalışmalar yapan Başkent Üniversitesi Öğretim Görevlisi Çığır İlbaş, facebook’un nasıl güvenli kullanılacağını özetledi:

GÜVENLİK ayarlarının (privacy) kullanıcı tarafından değiştirilmemesi durumunda, her türlü bilginizi başkaları görüyor. Bilgiler arasında e- posta, işyeri bilgileri, doğum tarihi, politik görüş ve kadınların kızlık soyadı da bulunuyor.

AYARLARI gizliliği yapılandırılmış olsa da, phishing (sahte e-postalarla kredi kartı numarası sorarak dolandırma yöntemi) saldırıları olabilir...

KULLANICI hesabıyla ilgili bildirimler e-posta’yla yapılıyor. facebook’un ana sayfasının kopyasının yapılması yöntemiyle e-postadan açılan linkle girilen kullanıcı adı ve şifre bilgileri 3’üncü şahısların eline geçebiliyor. Linkler yerine her zaman ana sayfadan giriş yapmayı tercih edin.


Özel mesaj atmayı tercih edin

Güvenlik için mutlaka yapmanız gerekenler şöyle:

GÜVENLİK ayarlarını kimsenin göremeyeceği şekilde yapın.

DUVAR yazıları yerine özel mesajlar gönderin.

GÜVENLİK ayarları doğru yapılandırılmış olsa da kişisel kritik bilgilerin sayfaya eklenmemesine dikkat edin.

MİNİ feed ve news feed’te, bilgi ve durum değişikliğinin görüntülenmemesi için gerekli ayarları yapın.

BAŞKALARININ sizin ne kadar facebook’u kullandığınızı görmesini istemiyorsanız, mutlaka ‘News feed and mini feed’e girip ‘show times in my mini feed’ seçeneğini iptal edin.



Ali Ekber ERTÜRK/ANKARA-Adem TOKDEMİR

Oracle Semineri

12 Kasım 2007

Etkinlik Konusu :
Oracle Trace Utility'e Giriş Ve Temel Performans Denklemini Anlamak
Etkinlik Türü :
Seminer
Hedef Kitle :
Oracle DBMS üzerinde uygulama geliştirenler ve uygulamalarindan daha fazla performans almak isteyeneler.
Kontenjan :
100
Etkinlik Tarihi - Saati :
17.11.2007 -- 10:30-13:00
Süre :
1 Gün
Eğitimi Veren :
H.Tonguç Yılmaz
Etkinlik Yeri :
Yıldız Teknik Üniversitesi Merkez Kampüsü Sergi Salonu Adres için TIKLAYINIZ

Hacking The Code - Asp.net web application Security

14 Ekim 2007


Syngress Publishing, Inc., the author(s), and any person or firm involved in the writing, editing, or production (collectively Makers) of this book (the Work) do not guarantee or warrant the results to be obtained from the Work.There is no guarantee of any kind, expressed or implied, regarding the Work or its contents. The Work is sold AS IS and WITHOUT WARRANTY. You may have other legal rights, which vary from state to state.


In no event will Makers be liable to you for damages, including any loss of profits, lost savings, or other incidental or consequential damages arising out from the Work or its contents. Because some states do not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you.

Table of Contents

  • Hacking the Code?ASP.NET Web Application Security
  • Chapter 1 - Managing Users
  • Chapter 2 - Authenticating and Authorizing Users
  • Chapter 3 - Managing Sessions
  • Chapter 4 - Encrypting Private Data
  • Chapter 5 - Filtering User Input
  • Chapter 6 - Accessing Data
  • Chapter 7 - Developing Secure ASP.NET Applications
  • Chapter 8 - Securing XML
  • Appendix A - Understanding .NET Security
  • Appendix B - Glossary of Web Application Security Threats

TYPE : CHM
LANG : English
PAGE : 500

Download 5 MB

SQL Server 2005 - A Developer's Guide


Developers will discover how to unleash the full power of Microsoft SQL Server 2005 with this developers guide by best-selling author, Michael Otey. Completely rewritten and reengineered, this book will focus on the new programming models and will provide readers with all the information they need to produce top-quality commercial applications.


Flash8, Dreamweaver8, Photoshop

Arkadaşlar web tasarımı geliştiriken kullanılan ve tasarıma yardımcı programlardan bazılarını istifadenize sunuyorum.

Dreamweaver 8

Photoshop

Flash 8

Professional AJAX

13 Ekim 2007


Elektronik Kitaplar (.net)


Bilge Adam Kurs Notları 1

Bilge Adam Kurs Notları 2

CSharp Nedir Tüm Makaleleri

Faydalanabileceğiniz çok güzel bir arşiv. Kolay gelsin.

DataRepeater ile Şablon Oluşturmak

03 Ekim 2007

“DataRepeater”, yinelenen verileri HTML biçiminde sunmak için kullanılan kontroldür. DataRepeater kontrolü içerik yerleşimi ile ilgili sunduğu templateler ile datalarımızı istediğimiz formatta görüntülememize yardım eder.

DataRepeaterın içerdiği teplateler:

  • ItemTemplate : Tekrarlanan herbir verinizin görüneceği şablonu oluşturmanızı sağlar. DataReader ın içinde bulundurmamız zorunlu olan tek “template” dir.

  • AlternatingItemTemplate : Alternatif satır şablonu anlmına gelmektedir. Ardarda görüntülenen her bir verinin okunurluk açısından birbirinden ayrılması için farklı renk ve biçim oluşturmamızı sağlar.

  • HeaderTemplate : ItemTeplate in üstünde bir başlık görünümü oluşturmanızı sağlar. Olması zorunlu değildir.

  • FooterTemplate : ItemTemplate ten sonra bitiş mahiyetinde bir şablon oluşturmanızı sağlar. Olması zorunlu değildir.

  • SeperatorTemplate : Herbir verinin arasında ayıraç olarak kullanabileceğiniz bir şablonu oluşturmanızı sağlar. Olması zorunlu değildir.

DataRepeater tepmlatelerini kullanarak yaptığım bir örnek;


Örneğin kodları;

İnternet Teknolojilerinin Dünü, Bugünü ve Yarını

01 Eylül 2007

CETURK, Eylül ayında da yine bir seminer gerçekleştiriyor. Katılımın ücretsiz olduğu seminer, 08 Eylül 2007 Cumartesi günü 14:00-16:00 saatleri arasında Microsoft Türkiye İstanbul ofisinde gerçekleştirilecektir.

Konuşmacı : Ali Rıza Babaoğlan
Seminer Yeri :Microsoft Türkiye İstanbul Ofisi
Kayıt olmak için : TIKLAYINIZ


ETKİNLİK İÇERİĞİ

Web 1.0 Ne İdi?
Web 2.0 Neler Sundu?
Web 3.0 Neler Sunacak?


KONUŞMACI
Byte Türkiye'de İnternet Editörü olarak çalışmakta olan Ali Rıza Babaoğlan, web tabanlı teknolojileri ve web tabanlı uygulama geliştirme alanında çalışmalarını sürdürmektedir. Ali Rıza Babaoğlan hakkında daha detaylı bilgiye http://www.alibabaoglan.com/ adresinden erişebilirsiniz.


ETKİNLİK SPONSORLARI








ETKİNLİK HEDİYEMİZ
Seminere katılan 3 üyemize çekilişle aşağıdaki kitaplardan hediye edilecektir. :

ASP.NET AJAX Semineri

27 Ağustos 2007


MSAkademik.net Editörü Uğur UMUTLUOĞLU tarafından 29 Ağustos Çarşamba günü İstanbul'da gerçekleştirilecek ASP.NET AJAX seminerine davetlisiniz.

Microsoft Akademik Yazılım Geliştiricileri Grubu ve nedirTV?com'un birlikte düzenleyeceği bu etkinliğe davetlisiniz. Seminer ile ilgili ayrıntılar aşağıdadır.

Not: Seminere katılım ücretsizdir.

ASP.NET AJAX SemineriAjanda

- AJAX: Asenkron JavaScript & XML
- ASP.NET AJAX- ASP.NET AJAX Mimarisi
- Visual Studio 2005'te ASP.NET AJAX Web Uygulamaları Geliştirmek
- ASP.NET AJAX Sunucu Kontrolleri
- Örnek Uygulamalar

Kontenjan: 40 kişi
Tarih: 29 Ağustos 2007 Çarşamba
Saat: 15.00 - 17.00
Adres: Netron Bakırköy Şubesi, İstasyon Cad. No:4 Bakırköy - İstanbul

Kayıt işlemi için buraya tıklayınız.

Yatay Scrollbar problemi

08 Ağustos 2007

Yatay Scrollbar Problemi Web tasarımında özellikle de frameler ile çalışırkan sıkça karşılaşılanilinen bir problem.

Yatay Scrollbarın çıkmasını engellemek için bir çok yol denemiş olabilirsiniz. Bu can sıkıcı olaya bir çözüm olabilmesi için açısından tüm web browserlarda(Netscape, Internet Explorer ve Firefox) istenilen sonucu veren (yatay scrolbarı engelleyen) çözüm önerim.


  1. Frame ya da iframe inizin dahil olduğu sayfaya şu style type ı ekleyin



  2. Iframe in scrolling özelliğinin scrolling="yes" olduğuna emin olun


  3. Framede açılan sayfada tablo kullanıyorsanız, tablonun width="%100" olması sorun çıkarabilirli, her ihtimale karşı aşağıdaki style type ı da framede açılacak sayfaya ekleyin.

    Kolay gelsin. İyi çalışmalar...

Çalışan Adam Logoları

06 Ağustos 2007

Çalışan Adam etiketlerini sayfanıza eklemek için aşağıdaki Kodlardan Dilediğinizi Kopyalayıp Sayfanıza Yapıştırınız:



Çalışan Adam - Yazılım


Çalışan Adam - Yazılım



Çalışan Adam - Yazılım


Çalışan Adam - Yazılım

ExecuteNonQuery(), ExecuteScalar(), ExecuteReader(), Metodları ve örnekler

05 Ağustos 2007

  • ExecuteNonQuery() ;

    Bu metod geriye int olarak update, insert, delete olaylarından etkilenen satır sayısı döndürüyor.

    DDL ve DML komutları için geliştirilmiştir diyebiliriz. Tamamiyle veri kaynağı üzerinde bir takım sonuçların doğmasına yardımcı olurlar. Bu tip komut cümlecikleri için, ExecuteNonQuery metodu kullanılır.

    Örnek:


  • ExecuteScalar();

    Bu metod sadece tek alanlık veri döndüren sql sorguları için kullanılır. Geriye Object tipinde bir değer döndürür.

    Örnek:


    Bu örnekte, Kisiler isimli tablomuza KisiID değeri 3 olan satırın sadece Ad isimli alanının değerini veren bir komut nesnesi ve Kisiler tablsundaki satır sayısını veren başka bir komut nesnesi kullanılmıştır. Her iki sql ifadeside sonuç olarak tek bir hücreyi döndürmektedir. Eğer sql ifadenizden birden fazla sütun alıyorsanız ve bu ifadeyi ExecuteScalar ile çalıştırıyorsanız, ilk satırın ilk sütunu haricindeki tüm veriler göz ardı edilecektir.


  • ExecuteReader();

    Uygulamalarımızda genelde veri kaynaklarından veri kümeleri çekme ihtiyacını hissederiz. Böyle bir durumda, ExecuteReader metodunu kullanabiliriz. ExecuteReader metodu, çalıştırılan komut sonucu elde edilen sonuç kümesinden bir SqlDataReader nesnesi için veri akışını sağlar.

    Örnek:

İyi çalışmalar... Mutlu kalın, huzurlu kalın...

Arama Motorlarının Çalışma Mantığı ve Arama Motoruna Site Ekleme Kriterleri

03 Ağustos 2007

ARAMA MOTORLARININ ÇALIŞMA MANTIĞI


Arama motorları'nın çalışma mantığına girmeden önce şunu belirtmek istiyorum ki bazı şirketlerin bir web sitesini google veya başka bir arama moturana kayıt yaptırmak için 100$ -150$ civarında ücret aldıklarını duydum ve çok şaşırdım. Bilindiği gibi arama motorları site barındırmak için herhangi bir ücret talep etmiyorlar.

Bilindiği gibi artık arama motorlarına kayıtlı olmayan veya iyi kaydedilemeyen bir web sitesinin pek bir önemi yoktur. Site sahibinden başka kimse siteyi ziyaret etmez. Onun için daha sitemizi yaparken arama motoruna nasıl ekleyeceğimiz düşünmeliyiz ve ona göre sitemizin yapısını oluşturmalıyız. Bazı durumlarda sitenin dizaynından çok o sitede kullanılan kelimelerin düzenliliği ve mantıklı yerlerde kullanılması daha etkilidir .O sitenin daha çok hit almasını sağlar.
Bundan dolayı site hazırlamadan önce arama motorlarının çalışma mantığınıda öğrenmek gerekmektedir ve bu iş bence çok önemlidir.

Arama motorları Netscape firmasının oluşturduğu Dmoz .org adlı veri tabanına erişim yaparak sonuç elde etmektedirler. http://dmoz.org/ adresine girdiğinizde aradığınız kelimeyi yazıp aramanızı daha geniş bir ortamda yapabilirsiniz.Toplam 4.660.955 site veritabanı 68,453 editor bulunmaktadır. Site kayıtları , editörler tarafından yapılmaktadır. Editör olmak ücretsiz ve herkese açıktır.

Tüm arama motorları google un algoritmasını kullanmaktadır. Bu arada google un arama algoritmasının yeryüzündeki en sağlam ve en iyi algoritma topluluğunun olduğu söyleniyor.Aksi halde bünyesinde 8.000.000 civarında web sitesi adresleyen google'un çok kısa sürede sonuç elde etmesi mümkün görünmüyor.

Veri tabanına eklenecek siteyi doğru kategoriye eklemek büyük önem taşımaktadır.Arama motorları sitelerdeki bilgileri dinamik olarak veri tabanında update etmelidir.(Bu olmazsa arama motorunun varlığından bahsedemeyiz)

Arama Motorları bu update işlemini yapmak için Dmoz.org veritabanında kayıtlı tüm domainleri SPIDER programı ile gezerek belli kriterlere göre (Spider programının kriterlerine göre ) sitedeki sayfaların(.html,.aspx)bir özetini çıkararak bu özet bilgilerini "cache" yerleştirerek kendini dinamik hale getiriyor.Arama isteği geldiğinde bu cache deki bilgiler üzerinde arama yapmaktadır. Cache alınan her sayfanın özeti 25K büyüklüğündedir. Buradan da Google 'un çok kısa bir sürede arama yapmasının nasıl gerçekleştiğini birazcık anlayabiliriz.

SPIDER , programı söylediğimiz gibi html sayfalarını belli kriterlere göre özetliyor ve siteyi gezerken sitedeki linkleri takip ederek ilerliyor.Sitenizin içerisindeki linklere göre iki türlü inceleme yapıyor. İleri ve Geri linkler.

İleri linkleri takip ederken ,kendi veritabanında(Dmoz.org) kayıtlı domain ise doğrulama yaparak ilerliyor.Geri linkleri takip ederken , kısır döngüye düşmemek için , iki site arasında karşılaştırma yapıyor ve sonucu bir olarak alıyor.Büyük site kazanır diyor ve çıkıyor.

0 – 0 = 0
1 – 0 = 0
1 – 1 = 1

Büyük siteler,küçük sitelerden beslenir. En çok link verilen site ,en büyük olur. Bu açıdan diğer domainlerin linklerini sitenize koyarken ,o sitelerin büyüklükleri sizinkinden küçük olmalı.
Sitenizdeki sayfa çokluğu arama motorları için daha çok indekslenecek sayfa demektir bu da sitenizin görüntülenmesi için pozitif bir özelliktir.

Eğer dinamik bir siteniz varsa ve siteniz somut olarak 5-6 sayfadan oluşuyorsa ama çalıştırdığınızda dinamik olarak sanal sayfalar oluşturuyorsa , SPIDER genellikle bu sayfaları yakalayamaz. SPIDER düz sayfaları alır. (.html .php .asp vs..)
Sorgulu sayfalar SPIDER için çoğu zaman kısır döngü olduğu için Arama motorları teknik olarak bu sayfaları CACHE 'e alamazlar.

Arama yapılıyor ve birden çok siteden sonuç alınıyor .Hangi sitenin ilk 10 da gösterileceğine nasıl karar veriliyor. Arama sonuçları arama kelimesini esas alarak cache ler üzerindeki incelemeler olarak değerlendiriliyor.Belli kriterlere göre sıralama yapılıyor.

SİTE EKLEMEDE BAZI ÖNEMLİ İPUÇLARI

  • Aranan kelime mutlaka sitede yer almalıdır.
  • Aranan kelimenin sitede kaç defa tekrar edildiği önemlidir.
Not : Sitedeki sayfada 20den fazla kelime tekrarı SPAM olarak kabul edilebilir ve siteniz sürekli olarak arama motorları kayıtlarından çıkartılabilir.
  • Eğer sitenizde link vermiş başka siteler çok ise öncelik sırası sizin sitenize geçer.
  • Ayrıca sitenin başlığıda önemlidir. Örneğin iki Pcsatış sitesi düşünelim .Bizde notebook kelimesi arattırmak isteyelim.Başlığında (title) Notebook yazan site öncelik kazanır
  • Sitenizin her sayfasına ayrı ayrı Title ve Description koymak indekslenme ve bulunma açısından büyük önem taşımaktadır.
  • Arama motorlarında yaptığınız bir arama genellikle binlerce ya da milyonlarca sonuç getirir. Çoğunlukla ilk sayfada sadece ilk 10 uygun sonuç görüntülenir.
  • Genellikle web sitesi olan herkes ilk 10'da görünmek ister. Arama sonucunda büyük ihtimalle aradığını ilk 10'da bulacak olan kişi 11 ya da daha sonra listelendiyseniz size hiç ulaşmadan aramasını sonlandırabilecektir.
  • Anahtar kelimelerinizi iyi seçmelisiniz. Mesela pc satış siteniz varsa anahtar kelimelerinize pc ,bilgisayar,notebook,satis,satış,online,taksit,..gibi stratejik anahtar kelimeler eklemelisiniz.Yani arama motoru üzerinde arama yapacak kişinin yerine kendinizi koyup iyice düşünmelisiniz.
  • Site dizaynında tablo kullanıyorsanız arama motorları sitenizi sizin gördüğünüz gibi görmeyebilir. Örneğin sağ tarafta bir menünüz varsa ve siz bunun yanına ilk paragrafı yazmışsanız ve bunları bir tablo içine almışsanız sizin normal olarak beklentiniz önce ilk paragrafınızı görmesidir. Ama arama motorları sitenizi en eski browserla ziyaret eden bir ziyaretçi gibidir. Bu yüzden de büyük bir ihtimalle sağda bulunan menüyü önce, ilk paragrafı ise sonra görüntüler ve bu da sizin ilk paragrafa yazdığınız hedef kelimelerinizin sayfanın daha altına düşmesine neden olur. Böyle bir dizaynla bunu çözmenin herhangi bir yolu yoktur. Ama bu sebepten tablo kullanmayı asla bırakmayın çünkü tablolar site dizaynının en önemli elementidirler. Aynı etkiyi javascriptler de yapar. Bu yüzden mümkün mertebe javascript kullanacaksanız bunları sayfanın altlarında kullanın.
  • Sayfanızın link verme yapısıda önemlidir.Sizden büyük olduğuna inandığınız sitelerin linklerini barındırmayın.
  • Anahtar kelimeyi belirledikten sonra bu kelimenin sitenizde ki yerine önem vermelisiniz.Size göre en önemli kelimeleri html sayfanızın başlığına koymalısınız. eğer mümkünse ilk birkaç paragrafta da kullanın.
  • Arama motorları flash dosyalarını 12 framset maksimum 100K olarak belirlemiştir ve sadece bu kritere uyan animasyonları CACHE ler.
  • Sitenizdeki imaj isimleri , Arama motorları tarafından aynı mantıkla imaj bankalarına kaydedilir.Bu açıdan imaj isimleri önemlidir.
  • Zemin rengi ile aynı renkte olan kelimeler CACHE lenir.(Sitenize bağlanan kişilerin IP adreslerini zemin renginizle aynı renkte alırsanız sitenize karşı saldırıları gözlemleyebilirsiniz.IP adresinin alındığını site kullanıcısı farkına varmaz.)
  • Resimlerdeki ALT Tekst 'ler text olarak CACHE lerir.Maksimum uzunluk 255 karakterdir.
    Site Title'ları maksimum 255 karakter olarak CACHE lenir.
    Genel olarak dinamik bir site yapıyorsanız , olması gereken yerler haricindeki bölümlerin HTML yapılması önemlidir.
  • FLASH yada GRAFİK ağırlıklı siteler arama motorları tekniklerine ters oldukları için arama motorları tarafından bir getirisi olmayan sitelerdir.
    Yahoo ,Google 'ın arama motoru tekniğini kullanmaktan önümüzdeki dönemde vazgeçecek ve kendi sisteminini uygulamaya başlayacak.Büyük bir ihtimallede Yahoo source edilen sayfalarıda CACHE eden bir sistem geliştiriyor. (makale.php?makale=1 gibi.)
http://www.koubm.org/ 'dan alıntıdır. İstifadenize sunmak istedim..

Full Backup Alma (Resimli Anlatım)

30 Temmuz 2007

Yedeğini almak istediğiniz veri tabaının üzerine sağ tıklayarak açılan menüden Tasksı ordan da Backup seçeneğine tıklıyorsunuz. (Resim-01)


Resim-01

Daha sonra açılan pencereden yedekleme ayarlarını yapıyorsunuz. Biz bu örneğimizde Full backup alacağız, o yüzden backup type kısmından full ü seçeçeğiz. Destination kısmında veritabanımızı yedekleyeceğimiz yeri seçiyoruz. Listeye default olarak bir adres gelecek, eğer kayıt yapacağınız yer orası değil ise o uzantıyı seçtikten sonra remove ile kaldırıyorsunuz. Add butonuna basarak da yeni bir adres seçiyorsunuz.(Resim-02)


Resim-02

İşaterli butona tıklayarak yedeğinizi saklamak istediğiniz klasör adresini seçiyoruz.(Resim-03)

Resim-03
Yedeklemek istedşğniz klasörün adresini seçtikten sonra dikkat etmeniz gerek bir husus var. File Name kısmına yedeğinizin adını .bak uzuntılı olarak kaydetmelisiniz. Aksi takdirde backup (yedek) alınmamış olur. Resim-04 teki örnekte File Name i OrnekDB.bak olarak kaydettim.

Resim-04

OK butonuna tıkladıktan sonra Select Backup Destination penceresinde yeni klasör adresinin göründüğünü göreceksiniz.(Resim-05)

Resim-05

OK butonun tıkladığınızda karşınıza çıkan pencerede artık eklediğiniz kalör adresinin görünmesi gerekir. Yapacağınız başka ayar yoksa penceredeki ok butonuna tıklayın. (Resim-06)

Resim-06

Eğer backup başarılı ise onay esajı ile karşılaşacaksınız. (Resin-07)

Resim-07

Yedeklediğimiz veritabanının, belirlediğimiz klasör adresinde olup olmadığını kontrol edelim. (Resim-08). O adreste verdiğiniz isimde bir bak dosyası var ise yedek başarı ile alınmıştır demek.

Resim-08

Kolay gelsin.. Bir sonraki yazıda görüşmek üzere..