İstemci Tarafı Doğrulama
Bu bölümde, Python Pentesting'de doğrulamanın nasıl yardımcı olduğunu öğreneceğiz.
Doğrulamanın temel amacı, kullanıcının bir işlemi başarıyla tamamlamak için gerekli ve uygun şekilde biçimlendirilmiş bilgileri sağladığını test etmek ve sağlamaktır.
İki farklı doğrulama türü vardır -
- istemci tarafı doğrulama (web tarayıcısı)
- sunucu tarafı doğrulama
Sunucu Tarafı Doğrulama ve İstemci Tarafı Doğrulama
Geri gönderme oturumu sırasında sunucu tarafında gerçekleşen kullanıcı girişi doğrulaması denir. server-side validation. PHP ve ASP.Net gibi diller, sunucu tarafı doğrulamasını kullanır. Sunucu tarafındaki doğrulama süreci bittikten sonra, yeni ve dinamik bir web sayfası oluşturularak geri bildirim istemciye geri gönderilir. Sunucu tarafı doğrulama yardımıyla kötü niyetli kullanıcılara karşı koruma sağlayabiliriz.
Öte yandan, istemci tarafında gerçekleşen kullanıcı girişi doğrulamasına istemci tarafı doğrulama denir. JavaScript ve VBScript gibi komut dosyası dilleri şunlar için kullanılır:client-side validation. Bu tür bir doğrulamada, tüm kullanıcı girişi doğrulaması yalnızca kullanıcının tarayıcısında yapılır. Bilgisayar korsanı, istemci tarafı kodlama dilimizi kolayca atlayıp sunucuya tehlikeli girdi gönderebildiğinden, sunucu tarafı doğrulama kadar güvenli değildir.
Temperleme İstemci Tarafı Parametresi: Doğrulama Baypası
HTTP protokolünde parametre geçişi POST ve GET yöntemleri yardımı ile yapılabilir. GET, belirli bir kaynaktan veri istemek için kullanılır ve POST, bir kaynağı oluşturmak veya güncellemek için bir sunucuya veri göndermek için kullanılır. Bu iki yöntem arasındaki en büyük farklardan biri, bir web sitesi GET yöntemini kullanıyorsa, geçiş parametrelerinin URL'de gösterilmesi ve bu parametreyi değiştirip web sunucusuna aktarabilmemizdir. Örneğin, sorgu dizesi (ad / değer çiftleri) bir GET isteğinin URL'sinde gönderilir:/test/hello_form.php?name1 = value1&name2 = value2. Öte yandan, POST yöntemi kullanılırken parametreler gösterilmez. POST ile sunucuya gönderilen veriler, HTTP isteğinin istek gövdesinde saklanır. Örneğin, POST/test/hello_form.php HTTP/1.1 Host: ‘URL’ name1 = value1&name2 = value2.
Doğrulama Atlama için Python Modülü
Kullanacağımız Python modülü mechanize. Bir web sayfasında web formlarının elde edilmesini sağlayan ve aynı zamanda giriş değerlerinin gönderilmesini kolaylaştıran bir Python web tarayıcısıdır. Mekanize etmenin yardımıyla, doğrulama ve müşteri tarafındaki parametreleri değiştirebiliriz. Ancak, Python betiğimize aktarmadan önce, aşağıdaki komutu çalıştırarak yüklememiz gerekir -
pip install mechanize
Misal
Aşağıda, parametreyi geçirmek için POST yöntemini kullanarak bir web formunun doğrulanmasını atlamak için mechanize kullanan bir Python betiği verilmiştir. Web formu bağlantıdan alınabilirhttps://www.tutorialspoint.com/php/php_validation_example.htm ve seçtiğiniz herhangi bir sahte web sitesinde kullanılabilir.
Başlangıç olarak, mekanize tarayıcıyı içeri aktaralım -
import mechanize
Şimdi adında bir nesne oluşturacağız brwsr mekanize tarayıcısının -
brwsr = mechanize.Browser()
Sonraki kod satırı, kullanıcı aracısının bir robot olmadığını gösterir.
brwsr.set_handle_robots( False )
Şimdi, doğrulamayı atlamamız gereken web formunu içeren sahte web sitemizin URL'sini sağlamamız gerekiyor.
url = input("Enter URL ")
Şimdi, aşağıdaki satırlar bazı ebeveynleri doğru yapacaktır.
brwsr.set_handle_equiv(True)
brwsr.set_handle_gzip(True)
brwsr.set_handle_redirect(True)
brwsr.set_handle_referer(True)
Ardından web sayfasını açacak ve web formunu o sayfaya yazdıracaktır.
brwsr.open(url)
for form in brwsr.forms():
print form
Sonraki kod satırı, verilen alanlardaki doğrulamaları atlayacaktır.
brwsr.select_form(nr = 0)
brwsr.form['name'] = ''
brwsr.form['gender'] = ''
brwsr.submit()
Komut dosyasının son kısmı, doğrulamayı atlamak istediğimiz web formu alanlarına göre değiştirilebilir. Yukarıdaki komut dosyasında iki alan aldık -‘name’ ve ‘gender’ boş bırakılamaz (web formunun kodlamasında görebilirsiniz), ancak bu komut dosyası bu doğrulamayı atlayacaktır.