Insan doğrulama için değişik bir yöntem

CAPTCHA insan doğrulama için ençok kullanılan yöntem. CAPTCHA resimli yöntemde (bu sene OSYM sonuçları açıklamak için de kullandı) eğri büğrü (robotik bir yazılımın okuyabilmesi çok güçtür) harfleden oluşan bir kelimeyi kutuya girmemizi istiyor. Kodu doğru olarak okumayı başarır ve gönderirseniz karşı taraftaki yazılım isteği yapanın bir program değil de gerçek bir bir insan olduğuna karar veriyor. Aksi takdirde ilgili servisi kullanmanıza izin vermiyor. Web in kirlenmesi ve haksız web servisi kullanmanın önüne geçmek adına, robot yazılımların kolaylıkla çözemeyeceği bu resim kodları kullanmak son zamanlarda çok işe yarıyor.

Resim kodu kullanmanın yanında daha basit ilginç bir çözüm ise tarayıcı tarafında javascript kullanarak insan etkileşimi teyit etmek. Örnek vermek gerekirse bir insan formu dolduruken kutuların içine tuş basımı gerçekleştirir (onkeydown-onkeyup) veya formu gönderirken submit düğmesinin tıklama (onmousedown-onmouseup-onmousemove) olayını tetikler. Ancak robotik bir yazılım bunların hiçbirini yapmayacağından fark kolaylıkla tespit edilebilir. Javascript ile onKeyDown ve onMouseMove olayları yardımıyla forma verisine bir onay kodu eklenebilir.

Kaynak: http://www.0x000000.com/?i=224

Google javascript ‘i dikkate alıyor

Burada söylendiğine göre;

“/human”+Math.round(99999*Math.random())+”.png”

gibi bir javascript kodu ile dosya ismi olusturulan bir sayfa var diyelim. Bilinenin aksine arama motorları bu sayfadaki javascript’i görmezden gelmiyor (1).  Web sunucusunun kayıtlarından google bot’unun javascript kodu bulunan sayfayı taradıktan sonra aşağıdaki gibi bir istekte bulunduğu görülüyor. Bir ölçüde de olsa javascript içeriğinin taranması güzel bir durum.

66.249.66.73 crawl-66-249-66-73.googlebot.com – -[29/Jul/2007:15:54:11 +0100]
GET /human HTTP/1.1 404 211

[1] Googlebot’unun javascript içeriği de bir ölçüde de olsa taradığını görmüş olmak güzel. [1] – Burada ve burada da geçtiği üzere javascript arama motorları tarafından tanınmayan bir öğe olarak bildirilmiş. Ayrıca javascipt li içerik varsa <noscript> tag’i ile tekrar sunulması tavsiye edilmiş.

Projedeki formları tespit etmek

Program projede yer alan formları çalışma anında tespit etmek ve onlara erişmeyi gösteren deneysel bir çalışma. Application.ComponentCount özelliği projede yer alan tüm nesnelerin sayısını verir. Application.Compnents dizisi ise bu nesnelerin veri yapısına işaret eden Tcomponent sınıfını içerir. Projedeki tüm nesneler taranarak is işleci ile TForm sınıfından olup olmadığına bakılır. as işleci ise dinamik olarak erişilen component’in istenilen sınıf gibi yorumlatılması için kullanılıyor.

Program projede yer alan formları çalışma anında tespit etmek ve onlara erişmeyi gösteren deneysel bir çalışma. Application.ComponentCount özelliği projede yer alan tüm nesnelerin sayısını verir. Application.Compnents dizisi ise bu nesnelerin veri yapısına işaret eden Tcomponent sınıfını içerir. Projedeki tüm nesneler taranarak is işleci ile TForm sınıfından olup olmadığına bakılır. as işleci ise dinamik olarak erişilen component’in istenilen sınıf gibi yorumlatılması için kullanılıyor.

Okumaya devam et “Projedeki formları tespit etmek”

Delphi’de düşük boyutlu program yazmak

Derlendiğinde 3.5KB ‘lık çalıştırılabilir kod üreten deneysel bir çalışma. Program delphi IDE’si veya doğrudan Delphi kod derleyicisi (dcc32) kullanılarak derleniyor. Ana program kodunu ve üniteleri derlemek için bat dosyaları kullanılıyor.

Küçük boyutları elde etmek için IDE aracılığyla derlemekten kaçınılabilir, Delphi IDE si varsayılan derleme seçenekleri ile programa fazladan kod ve kontrol blokları ekler. Bu özellik programın çevikliğini artırırken diğer yandan çalıştırılabilir kodun belli ölçüde büyümesine ve yavaşlamasına neden olur.

Çoğu zaman programa dahil edilen yerel Delphi üniteleri de programın boyutunu artırır. Bir nesnenin kullanılmayan bazı özellik ve yordamlari da ana koda dahil olur. Birbirinden türeyen bazı nesnelerin yapısı  türedikleri sınıfa bağlı olarak uzun bir zincir oluşturabilir ve bu durum doğal olarak programın boyutunun artmasına neden olur. Bunun yerine örnek programda olduğu gibi en sade sınıfları ve nesneleri kendiniz hazırlayabilirsiniz. Aslında bu yöntem kalın uygulamalar hazırlarken pek uygulanabilir değildir.

Programın bellek kullanımını da derleyici direktiflerini kullanarak sınırlandırabilirsiniz.

Derlendiğinde 3.5KB ‘lık çalıştırılabilir kod üreten deneysel bir çalışma. Program delphi IDE’si veya doğrudan Delphi kod derleyicisi (dcc32) kullanılarak derleniyor. Ana program kodunu ve üniteleri derlemek için bat dosyaları kullanılıyor.

Küçük boyutları elde etmek için IDE aracılığyla derlemekten kaçınılabilir, Delphi IDE si varsayılan derleme seçenekleri ile programa fazladan kod ve kontrol blokları ekler. Bu özellik programın çevikliğini artırırken diğer yandan çalıştırılabilir kodun belli ölçüde büyümesine ve yavaşlamasına neden olur.

Çoğu zaman programa dahil edilen yerel Delphi üniteleri de programın boyutunu artırır. Bir nesnenin kullanılmayan bazı özellik ve yordamlari da ana koda dahil olur. Birbirinden türeyen bazı nesnelerin yapısı  türedikleri sınıfa bağlı olarak uzun bir zincir oluşturabilir ve bu durum doğal olarak programın boyutunun artmasına neden olur. Bunun yerine örnek programda olduğu gibi en sade sınıfları ve nesneleri kendiniz hazırlayabilirsiniz. Aslında bu yöntem kalın uygulamalar hazırlarken pek uygulanabilir değildir.

Programın bellek kullanımını da derleyici direktiflerini kullanarak sınırlandırabilirsiniz.

Okumaya devam et “Delphi’de düşük boyutlu program yazmak”

uncaught exception: XMLHttpRequest.open methodunun çağrılması için gerekli izniniz yok.

Gece vakti aşırı korumacı bir tarayıcıyla başım dertte. Firefox yerel bir dosyadaki XMLHttpRequest kodu ile uzak bir siteden veri çekeceğinde bu hatayı verdi. Aslında uyarı demek daha doğru olacak. Bununla karşılaşana kadar Internet Explorer 6 da böyle bir durumun varlığından bile haberim yoktu. İşin aslı burada yazdığına göre yüce tarayıcı Firefox’un bir güvenlik özelliği. Kısaca Firefox çapraz-alan adı (cross-domain) sorgulamalarına izin vermiyor. Yani isteyensiten.com alan adından baskabirsite.com adresindeki bir veri kaynağından AJAX ile XML olarak veri istemek pek mümkün değil. Denerseniz şöyle bir hata mesajı alıyorsunuz, benden söylemesi ;)

Error: uncaught exception: 
Permission denied to call method XMLHttpRequest.open

Gece vakti aşırı korumacı bir tarayıcıyla başım dertte. Firefox yerel bir dosyadaki XMLHttpRequest kodu ile uzak bir siteden veri çekeceğinde bu hatayı verdi. Aslında uyarı demek daha doğru olacak. Bununla karşılaşana kadar Internet Explorer 6 da böyle bir durumun varlığından bile haberim yoktu. İşin aslı burada yazdığına göre yüce tarayıcı Firefox’un bir güvenlik özelliği. Kısaca Firefox çapraz-alan adı (cross-domain) sorgulamalarına izin vermiyor. Yani isteyensiten.com alan adından baskabirsite.com adresindeki bir veri kaynağından AJAX ile XML olarak veri istemek pek mümkün değil. Denerseniz şöyle bir hata mesajı alıyorsunuz, benden söylemesi ;)

Okumaya devam et “uncaught exception: XMLHttpRequest.open methodunun çağrılması için gerekli izniniz yok.”

The CoDeeN Content Distribution Network

CoDeeN yüksek performanslı içerik saklama ve dağıtmak amacıyla geliştirilmekte olan bir proje. Asıl Princeton üniversitesi bünyesinde geliştirilen proje birçok üniversitenin de desteğiyle test edilmekte ve geliştirilmekte. Amacı bir proxy network’ü oluşturarak kullanıcılarına içeriği en kısa zamanda en etkin ağ kaynağı kullanarak sunmak olan proje diğer yandan da önbellekleme yaparak içerik kaynaklarının yükünü hafifletme amacını taşıyor. Proje network’ündeki bir proxy’i kullanan bir kullanıcı sıradan web proxy’lerinden farklı olarak istediği içeriğe ulaşabilmek için uygulamaya dahil proxy’ler arasında en uygun CoDeeN proxy’sine yönlendirilebiliyor. CoDeeN hakkında daha fazla bilgi için bu sunuyu izleyebilirsiniz.

CoDeeN yüksek performanslı içerik saklama ve dağıtmak amacıyla geliştirilmekte olan bir proje. Asıl Princeton üniversitesi bünyesinde geliştirilen proje birçok üniversitenin de desteğiyle test edilmekte ve geliştirilmekte. Amacı bir proxy network’ü oluşturarak kullanıcılarına içeriği en kısa zamanda en etkin ağ kaynağı kullanarak sunmak olan proje diğer yandan da önbellekleme yaparak içerik kaynaklarının yükünü hafifletme amacını taşıyor. Proje network’ündeki bir proxy’i kullanan bir kullanıcı sıradan web proxy’lerinden farklı olarak istediği içeriğe ulaşabilmek için uygulamaya dahil proxy’ler arasında en uygun CoDeeN proxy’sine yönlendirilebiliyor. CoDeeN hakkında daha fazla bilgi için bu sunuyu izleyebilirsiniz.
Okumaya devam et “The CoDeeN Content Distribution Network”

Echo ve Print arasındaki farklar

Echo, Print’e göre işlemciyi daha verimli kullanır. Aşağıda örnek echo ve print‘in 100.000 kez parametresiz çalıştırılması sırasında geçen sürelerin ölçümünü gösteriyor.

 Echoing 100000 of nothing
 Execution time is 0.037015199661255 seconds.

 Printing 100000 of nothing
 Execution time is 0.040477991104126 seconds.

Echo, Print’e göre işlemciyi daha verimli kullanır. Aşağıda örnek echo ve print‘in 100.000 kez parametresiz çalıştırılması sırasında geçen sürelerin ölçümünü gösteriyor.

Echoing 100000 of nothing
Execution time is 0.037015199661255 seconds.

Printing 100000 of nothing
Execution time is 0.040477991104126 seconds.

Okumaya devam et “Echo ve Print arasındaki farklar”

Cazibeli PHP/SWF web grafikleri

PHP/SWF Charts, PHP kullanarak dinamik veri kaynağından basitçe, güçlü ve etkileyici grafikler sunmak için bir araç. Grafiği sunarken kullanılabilecek birçok flash tasarımı var. Örneğin aşağıdaki grafiği oluşturmak için şöyle bir kod kullanmak yetiyor;

<?php
include “charts.php”;

//the chart’s data
$chart [ ‘chart_data’ ] = array ( array ( “”,         “2001”, “2002”, “2003”, “2004” ),
array ( “Region A”,     5,     10,     30,     63  ),
array ( “Region B”,   100,     20,     65,     55  ),
array ( “Region C”,    56,     21,      5,     90  )
);

//send the new data to charts.swf
SendChartData ( $chart );

?>

Delphi 2007 for PHP

Delphi for PHP (DPHP), Delphi benzeri görsel uygulama geliştirme ortamı ile PHP’de web projesi gelistirme konusunda bir devrim yaratıyor. DPHP, PHP’de sağlam web uygulamaları geliştirmek için hızlı ve kolay bir yol sunuyor. 

Web geliştiricileri arasında PHP kullananların oranı oldukça fazla. Hatta ilk sırada diyebiliriz. PHP için yazılmış açık kaynak kodlu proje ve bileşenleri de hesaba katarsak PHP’nin önemi iyice netleşecektir. Ancak yaygın kullanımına ve popülaritesine rağmen bu güne kadar aşırı gelişmiş kod editörlerinin dışında ciddi bir RAD (Rapid Application Development) aracına sahip olamamış. Delphi for PHP, Delphi arayüzüne aşina olanlara PHP’de hızlı bir geliştirme ortamı sunuyor.

Delphi for PHP (DPHP), Delphi benzeri görsel uygulama geliştirme ortamı ile PHP’de web projesi gelistirme konusunda bir devrim yaratıyor. DPHP, PHP’de sağlam web uygulamaları geliştirmek için hızlı ve kolay bir yol sunuyor.

Web geliştiricileri arasında PHP kullananların oranı oldukça fazla. Hatta ilk sırada diyebiliriz. PHP için yazılmış açık kaynak kodlu proje ve bileşenleri de hesaba katarsak PHP’nin önemi iyice netleşecektir. Ancak yaygın kullanımına ve popülaritesine rağmen bu güne kadar aşırı gelişmiş kod editörlerinin dışında ciddi bir RAD (Rapid Application Development) aracına sahip olamamış. Delphi for PHP, Delphi arayüzüne aşina olanlara PHP’de hızlı bir geliştirme ortamı sunuyor.

Okumaya devam et “Delphi 2007 for PHP”

PHoss Security Sniffer

PHoss linuxda çalışan bir ağ koklama yazılımı. Kullanımı çok basit olan Phoss ağdaki HTTP (Basic authentication), FTP, POP3, IMAP4, LDAP ve TELNET oturumlarının parola ve kullanıcı isimlerini canlı olarak elde ediyor ve ekrana basıyor. Tabi switch li bir ağınız varsa öncelikle arpspoof gibi bir araçla tüm trafiği kendinize yönlendirmeniz gerekir. Ağınız HUB ile bağlıysa buna görek yok. HUB zaten trafik tüm ağa yayarlar. Bu aracın windows muadili olarak Ace Password Sniffer ve SniffPass var.

Yarım kalmış bir PHP projesi: e-Okul

e-Okul, muazzam sayıda bit(irile)memiş projenin yer aldığı kod arşivimden bir e-devlet atraksiyonu. 2004 yılında nice umutlarla giriştiğim bu işin ömrü nedense pek fazla ol(a)madı. Ana fonksiyonlarının bir kısmı tamamlamış olmama rağmen düzeltilecek ve geliştirilecek çok yönü var. Temel olarak öğrenci ve ailelerinin şifreleri ile giriş yapıp not ve devamsızlık gibi bilgileri  öğrenebilmelerini sağlayan bir proje. Sanırım ekran görüntüleri daha çok şey anlatır. Genel özellikleri ve kodları bu konuda çalışan arkadaşlara belki faydalı olur.

CAPTCHA ile insan doğrulama

CAPTCHA, insan olmayan sistemleri bir takım insancıl özellikleri kullanarak tespit etmek olarak tanımlanabilir. Son bir aydır siteye onlarca reklam/link içeren spam yorumlar eklenmeye başlandı. Bu iş yorum spamcıları (blogspam comment) olarak sınıflandırılan yazılımlar kullanılarak yapılıyor. Bu programlar web deki formları tarayor ve açık sitelere mesaj ve bağlantılar otomatik olarak bırakılıyor. Bu iz bırakma atraksiyonları tamamen otomatize edilmiş yazılımlarla, pagerank/hit artırmak amacıyla yapılıyor. Siteyi spam dan korunmak için yorum ekleme formuna CAPTCHA güvenlik resmi yerleştirdim. Resimdeki güvenlik kodu ilgili kutuya doğru olarak girilmedikçe eklenen yorum kabul edilmeyecek.

CAPTCHA, insan olmayan sistemleri bir takım insancıl özellikleri kullanarak tespit etmek olarak tanımlanabilir. Son bir aydır siteye onlarca reklam/link içeren spam yorumlar eklenmeye başlandı. Bu iş yorum spamcıları (blogspam comment) olarak sınıflandırılan yazılımlar kullanılarak yapılıyor. Bu programlar web deki formları tarayor ve açık sitelere mesaj ve bağlantılar otomatik olarak bırakılıyor. Bu iz bırakma atraksiyonları tamamen otomatize edilmiş yazılımlarla, pagerank/hit artırmak amacıyla yapılıyor. Siteyi spam dan korunmak için yorum ekleme formuna CAPTCHA güvenlik resmi yerleştirdim. Resimdeki güvenlik kodu ilgili kutuya doğru olarak girilmedikçe eklenen yorum kabul edilmeyecek.
Okumaya devam et “CAPTCHA ile insan doğrulama”