URL Fonksiyonları (Web URL Encoding)

PwnLab.Me

Admin
Katılım
21 Ocak 2024
Mesajlar
202
Tepkime puanı
9
Puanları
18

Kaan Kozan tarafından 14 Mart 2021 tarihinde yazılmıştır.​



Merhabalar, bugün sizlerle URL Fonksiyonları'nın kullanımını ve PHP'de nasıl oluşturulduğunu göreceğiz.

Uniform Resource Loader Ne Anlama Gelir?

URL Terimi tarayıcıda site adresinin belirtilmesi için kullanılan Resource Loader olarak tanımlanabilir. URL, farklı yöntemler ile oluşturulur. Kaynak sitede link (adres) belirtir.

Kısaca URL oluşturmak için kullanılan temel kurallar;

1) Değişken içerisindeki değerler kısaca '-_.' hariç sayısal olmayan bütün karakterler yüzde (%) olarak,

2) Boşluklar ise artı (+) olarak değişime uğrar,

3) On altılık rakamlar sistem üzerinde etkilidir.



HTML Form Encoded Kullanımı

application/x-www-form-urlencoded >> enctype URL Kod Form

Kod:
<form action="/urlencoded?firstname=pwn&lastname=sloth" method="POST" enctype="application/x-www-form-urlencoded">
    <input type="text" name="username" value="pwnlab.me"/>
    <input type="text" name="password" value="pwnlab.me"/>
    <input type="submit" value="Submit" />
</form>
Yukarıda görülebileceği gibi html ile form oluşturduk. Bu form'da input type kullanarak text'leri "pwnlab.me" value'si ile usurname ve password olarak atadım.

Ayrıca verilerimiz için method'u POST olarak ayarladım. (Local Host için çok önemli değildir.)

Aynı zamanda enctype olarak application/x-www-form-urlencoded kullanarak file içerisinde entype türünü ayarladık.

urlencoded?firstname=sid&lastname=sloth
Sorgu için parametrelerimizi URL'de üste bulunan şekilde ayarlandı. Bu bizim kodumuzda form action kısmında belirttiğimiz kısımdır.

Sonuç olarak kod betiğimiz aşağıdaki şekilde.


1705956231025.png



File kısmında kodlarımızı anlatılan şekilde ayarladıktan sonra, Dev Tools aracılığıyla Network-Request-Headers kısmından Content Type incelenebilir.
1705956246663.png



HTML Form bu sayede application/x-www-form-urlencoded olarak URL Encoded şekilde incelenebilir. URL Encode bize + - %20 (-) gibi operatörler ve url encode bilgileri sağlıyor.



HTML Multipart Form Encoded Kullanımı

multipart/form-data >> Enctype Multipart Forms


Kod:
<!DOCTYPE html>
<html>
<head>
<title>pwnlab.me - URL</title>
</head>
<body>

<form action="/urlencoded?firstname=pwn&lastname=sloth" method="POST" enctype="multipart/form-data">
<input type="text" name="username" value="pwnlab.me"/>

<input type="text" name="password" value="pwnlab.me"/> <input type="submit" value="Submit" /> </form>

</body>
</html>
Multipart Formlar genel olarak form-encoded formlara göre daha çok tercih edilir. Multipart formlar sayesinde kullanıcıların file upload gerçekleştirebileceği sistemler kurulabilir. Bu yüzden Multipart Forms popülerdir.

Biz application/x-www-form-urlencoded formlar'da kullandığımız kod betiği ile üzerinden gideceğiz. Sadece entype türünü multipart/form-data olarak değiştirerek inceleyebiliriz.

1705956254547.png


Herhangi bir editör ve server aracılığı ile aynı işlemi yapabiliriz. Tüm bu işlemlerden sonra ben yine locolhost kullanacağım.

Aşağıdaki şekilde Dev Tools aracılığı ile Network-Request-Headers kısmından Content Type inceleyebiliriz.

1705956260081.png


Görebileceğiniz üzere Content-Type'da istediğimize ulaşabildik.

Content-Disposition
Yukarıdaki betik ile Multipart Form Boundary üzerinde edit yapabiliriz.



PHP Üzerinde URL Encoding - URL Fonksiyonları Kullanımı



Konumuzun üst kısmında HTML içerisinde Form'larda nasıl URL Encoding yapılacağını gördük.

Şimdi ise PHP'de URL Encoding nasıl yapılıyor bunu görelim. Bunun için bir PHP Dosyası oluşturarak, fonksiyonlar üzerinden tanımamız gereklidir.

urlencode() Fonksiyonu ve Kullanımı

GET methodu yardımıyla gönderdiğimiz veriler bize otomize olarak urlencode() ile dönmektedir. URL Encoding işleminden bahsetmiştik bu yüzden direkt kullanımına ve anlatımına geçebiliriz.

Aşağıda basit bir kullanımı ile anlamak kolay. En basit yöntemi ile urlencode() aşağıdaki şekilde kullanılabilir.

Kod:
<?php

$pwnlab = "Pwnlab ME URL Encode";
echo urlencode($pwnlab);

?>
Bu kullanımda $pwnlab değişkenimize atanan "Pwnlab ME Url Encode" değeri ile urlencode() kullanarak sayfada PHP URL Encoding işlemini anlayabiliriz.

1705956270322.png


Aynı şekilde kodun localhost üzerinde çıktısı;

1705956274612.png


Şeklinde olacaktır. Bahsettiğimiz operatörler aracılığıyla urlencode() fonksiyonumuz değeri işleme aldı.



base64_encode() Fonksiyonu ve Kullanımı

Belirtilen veriye URL üzerinde Base64 kodlaması, şifrelemesi uygulanmasını sağlar ve normal veriden daha fazla yer kaplar. Belirli sebeplerle URL üzerinde veride gizleme yapılmak istenebilir. Bu durumda base64_encode() fonksiyonu kullanılır. (Example: input ve footer)

Kod:
<?php

$pwnlab = 'Pwnlab';
$base64_encode = base64_encode($pwnlab);
echo $base64_encode;

?>
Aynı şekilde kod editöründe aşağıdaki şekilde olmalıdır.

1705956280095.png


Ayrıca localhost ile bahsedilen çıktıyı görüntülersek;

1705956284084.png


UHdubGFi şeklinde bir çıktı alacağız. Bu değer bizim $pwnlab değişkenimizin base64_encode() fonksiyonu ile harmanlanmış halidir.



get_headers() Fonksiyonu ve Kullanımı

Gönderilen istekle tüm Headers değerlerini, başlıkları çıktı olarak görüntülememizi sağlar.

Kullanmak için aşağıdaki kod betiğini basit şekilde deneyebiliriz.

Kod:
<?php

$pwnlab = 'https://pwnlab.me/';
echo "<pre>";

print_r(get_headers($pwnlab));

?>
Kodumuzda genel olarak print_r ile tüm headers değerlerimizi elde ettikten sonra ekrana yazdırdım.

Kodumuz üsteki şekilde editöre aktarılmalıdır.

1705956292228.png


Aynı zamanda çıktımız ise aşağıdaki şekilde olacaktır.


1705956296317.png



get_meta_tags() Fonksiyonu ve Kullanımı

URL'de HTML için <head></head> tag'ının arasında bulunmakta olan meta verilerini get_meta_tags() fonksiyonu sayesinde elde edebiliriz.

Kod:
<?php

$pwnlab = get_meta_tags('https://pwnlab.me/');
echo "<pre>";
print_r($pwnlab);

?>
Aşağıdaki şekilde IDE üzerinde kullanabiliriz.

1705956301524.png


Aynı şekilde localhost üzerinden görüntülenmesi de aşağıdaki şekilde sağlanabilir.



1705956306735.png


http_build_query() Fonksiyonu ve Kullanımı

Bir dizi oluşturarak basit şekilde http_build_query() sayesinde belirtilen niteliklerde arama, sorgu yapabiliriz.

Aşağıdaki kullanım ile gösterilebilir.

1705956315626.png

1705956323525.png

PHP Üzerinde URL Fonksiyonlarımızı gördük. PHP ve HTML'de URL İşlemleri temel olarak anlatılan şekilde işliyor. Basit mantıklarla anlatımı kolaylaştırmaya çalıştık. Siz kullanım yaparken kendi projelerinize uygulayabilirsiniz.



JavaScript URL Encoding İşlemleri ve Kullanımı

PHP ve HTML üzerinde olduğu gibi JavaScript'de de URL Encode mekanizmaları vardır. Bu kullanımı ben;

Sitesinden örnek alarak yapacağım. Bu konuda daha detaylı bilgi için sizlerde göz atabilirsiniz.

Kod:
<!DOCTYPE html>
<html>
<body>

<p>Click the button to encode a URI.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction() {
var uri = "my test.asp?name=ståle&car=saab";
var res = encodeURI(uri);
document.getElementById("demo").innerHTML = res;
}
</script>

</body>
</html>
Alıntı yaptığımız kodu aşağıdaki şekilde IDE'ye aktarabiliriz.

1705956337925.png


Ayrıca aşağıdaki şekilde localhost üzerinden sonuç olarak çıktıya da bakabiliriz.

1705956342962.png




URL Encode ve URL Fonksiyonları hakkında anlatacaklarım buraya kadardı, okuduğunuz için teşekkürler. Esenlikler diliyorum.
 
Geri
Üst