lostyazilim
tr.link

PHP API Htaccess Hatası

8 Mesajlar 1.237 Okunma
lstbozum
tr.link

fatihclkl fatihclkl WM Aracı Kullanıcı
  • Üyelik 30.10.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Back-End Developer
  • Konum İstanbul Anadolu
  • Ad Soyad F** Ç**
  • Mesajlar 469
  • Beğeniler 162 / 43
  • Ticaret 8, (%100)
merhaba arkadaşlar,

Yazmış olduğum apinin url yönlendirmesini htaccess ile sağladım. Fakat htaccess kafasına göre çalışıyor. Biranda hiç anlamadan çöküyor. Nedeni ne olabilir?

Ayrıca API KEYi request headerına koymak istiyorum. SSL ile encode etmek için. Nasıl yapabilirim?
 

 

wmaraci
reklam

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)
Requesti htaccess ile değil de kendin handle etmen daha sağlıklı olur aksi taktirde böyle karışık şeyler için apache seviyesine kadar inmen gerekir. Frameworklerdeki router kısımlarını incele fikir verecektir.

Bir anda anlamadan çöken şey server olabilir veya kodlarında bir sorun vardır, htaccess ile bir alakası yok. Yani htaccess ya çalışır ya çalışmaz, bir çalışıp bir çalışmama durumu yok.

HTTP request methods (GET, POST, PUT, PATCH, UPDATE, DELETE...) konusuna bir bakıver, get dediğin yerde muhtemelen GET isteği yapıyorsundur. GET get şeklinde anlamsız duruyor.

API key random bir şey olabilir ama encode edilecek bir şey olmamalı, işin mantığında böyle bir şey yok. Mutlaka bir doğrulamaya ihtiyacın varsa authorization işlemini JWT veya OAuth2 gibi çözümlerle yapabilirsin.
fatihclkl

kişi bu mesajı beğendi.

no time for caution

RespectionS RespectionS Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 14.08.2019
  • Yaş/Cinsiyet 26 / E
  • Meslek Full-Stack Developer
  • Konum İstanbul Avrupa
  • Ad Soyad S** Ç**
  • Mesajlar 518
  • Beğeniler 1 / 188
  • Ticaret 5, (%100)
parse url ile yapman gerekli handleyi htacces ile değil arkadaşında dediği gibi apache seviyesine kadar geri dönmen gerekir. Tavsiyem ya framework kullan ya da kendin frameworklerdeki router yapısını incele ve kendine sadece router yapısı benzeri bir urlyi parse ettiren fonksiyon yaz ve url segmentlerine ayırıp segmentten api keyi veya neyi gönderiyorsan onu al.
fatihclkl

kişi bu mesajı beğendi.

fatihclkl fatihclkl WM Aracı Kullanıcı
  • Üyelik 30.10.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Back-End Developer
  • Konum İstanbul Anadolu
  • Ad Soyad F** Ç**
  • Mesajlar 469
  • Beğeniler 162 / 43
  • Ticaret 8, (%100)

Decimas adlı üyeden alıntı

Requesti htaccess ile değil de kendin handle etmen daha sağlıklı olur aksi taktirde böyle karışık şeyler için apache seviyesine kadar inmen gerekir. Frameworklerdeki router kısımlarını incele fikir verecektir.

Bir anda anlamadan çöken şey server olabilir veya kodlarında bir sorun vardır, htaccess ile bir alakası yok. Yani htaccess ya çalışır ya çalışmaz, bir çalışıp bir çalışmama durumu yok.

HTTP request methods (GET, POST, PUT, PATCH, UPDATE, DELETE...) konusuna bir bakıver, get dediğin yerde muhtemelen GET isteği yapıyorsundur. GET get şeklinde anlamsız duruyor.

API key random bir şey olabilir ama encode edilecek bir şey olmamalı, işin mantığında böyle bir şey yok. Mutlaka bir doğrulamaya ihtiyacın varsa authorization işlemini JWT veya OAuth2 gibi çözümlerle yapabilirsin.


authorization kullanıyorum. user : pass şeklinde. API Keyleri ise direk tanımlıyorum. user : pass girip bi token oluşturmuyorum.

Sizce user : pass girerek mi api key almak mantıklı olur?

Şöyle bir url yapım var.

method POST /app/v1/lock/apiKey/deviceId/
/app/v1/lock/5a7c014d85f453af198ff0/123/

method GET /all/apiKey/

Bu şekilde sorgu yapıyorum. API keyi url den request headera alma olayını pek anlayamadım. Nasıl sorgu yapabilirim bilmiyorum o şekilde.
 

 

wmaraci
wmaraci

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)
Bu işin mantıklı olup olmama durumu değişir. Örneğin döviz takibi yapan bir uygulama için sonsuza dek sabit kalacak bir API key yeterli olurken hassas verilerin 3. kişilerce alınmaması için değişken bir token sistemine ihtiyacın var.

Neden? Ağdaki HTTP ve hatta HTTPS trafiği izlenebiliyor. Dolayısıyla 3. kişiler isteğini taklit edip istedikleri yerlerde kullanabilirler. Verdiğin veri çok mu önemli? Bunu göz önünde bulundurmak gerek hesap yaparken. Değilse key yeterlidir diyebiliriz.

Header'a parametre şeklinde geçmek çok basit. PHP ile header set, JS ile header set ve PHP ile header okuma.
fatihclkl

kişi bu mesajı beğendi.

no time for caution

fatihclkl fatihclkl WM Aracı Kullanıcı
  • Üyelik 30.10.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Back-End Developer
  • Konum İstanbul Anadolu
  • Ad Soyad F** Ç**
  • Mesajlar 469
  • Beğeniler 162 / 43
  • Ticaret 8, (%100)
Decimas çok teşekkür ederim.Verdiğiniz bilgiler için.

Peki burda /app/v1/lock/5a7c014d85f453af198ff0/123/

POST methodunu kullanırken yukardaki apikey'i mecburen url'e yazmam gerekli değil mi? Farklı bir mantık var mı? Güvenlik açısından header gömmek istiyorum ama.
 

 

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)
Mecburi değil, istersen header ile gönderebilirsin. Ben de token ve key gibi şeyleri URL ile gönderme taraftarı değilim çünkü çirkin bir görüntü oluşuyor. Güvenlik kısmına bakacak olursak, URL'i okumak kolay ama header için uğraşmaları lazım.

Güvenlik için oranlar verelim (sallıyorum)

URL üzerinden key gönderirsen %50
header üzerinden gönderirsen %60

URL üzerinden token gönderirsen %80
header üzerinden gönderirsen %90

şeklinde güvenli olur dersek ve önceki gönderide neden key token kullanırız konusunu da düşünürsen aşağı yukarı stratejin belli olur.

Şuradaki tartışmayı okursan client tarafının o kadar da masum olmadığı, güvenliğin %100 mümkün olmadığını göreceksin. (Eğer JS çalışıyorsan CORS konusuna ve OWASP'nin 10 maddesine bakıver.)

Sadede gelirsek header'a gömersen içine biraz su serpilir :)
fatihclkl

kişi bu mesajı beğendi.

no time for caution

fatihclkl fatihclkl WM Aracı Kullanıcı
  • Üyelik 30.10.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Back-End Developer
  • Konum İstanbul Anadolu
  • Ad Soyad F** Ç**
  • Mesajlar 469
  • Beğeniler 162 / 43
  • Ticaret 8, (%100)
Decimas Bu baya açıklayıcı teşekkürler :)
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al