5 Mart 2015 Perşembe

HTTP POST metodu ile form verisi gönderme.

Tipik bir POST request şöyle tanımlanır:
POST request-URI HTTP-version
Content-Type: mime-type
Content-Length: number-of-bytes
(other optional request headers)
  
(URL-encoded query string)

Farzedelim ki web sayfamızda bir giriş/login formu var. POST request ile bu bilgilerin servera gitmesini ve kontrol edilmesini istiyoruz.

<html>
<head><title>Login</title></head>
<body>
  <h2>LOGIN</h2>
  <form method="post" action="/bin/login">
    Username: <input type="text" name="user" size="25" /><br />
    Password: <input type="password" name="pw" size="10" /><br /><br />
    <input type="hidden" name="action" value="login" />
    <input type="submit" value="SEND" />
  </form>
</body>
</html>

Diyelim ki "test user" kullanıcı adı ve "pass" şifre bilgisi giren bir kullanıcı "giriş" butonuna tıklayarak siteye giriş yapmak istiyor.
Bu durumda kullanıcının browserı şöyle bir POST request gönderir:

POST /bin/login HTTP/1.1
Host: 127.0.0.1:8000
Accept: image/gif, image/jpeg, */*
Referer: http://127.0.0.1:8000/login.html
Accept-Language: en-us
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Content-Length: 37
Connection: Keep-Alive
Cache-Control: no-cache
   
User=test+user&pw=pass&action=login

Bu istek mesajında servera content-type headerı ile verinin URL-encoded olarak gönderildiğini ve content-length headerı ile de mesajın body kısmının tam 37 byte olduğunu, yani 37 byte'lık veri okuması gerektiğini bildirmiş oluyoruz.

Burada dikkat edilmesi gerek bir nokta şudur: POST requesti içinde gönderilen şifre, açık bir text olarak gönderiliyor. Yani POST request ile şifre yollamak kesinlikle güvenli değildir. Ağı gözetleyen bir sniffer ile açık ve net bir şekilde bu şifreyi başkaları okuyabilir.




Hiç yorum yok:

Yorum Gönder