Merhaba arkadaşlar,
Web sitem için php ile api sistemi kurdum siteadi.com/api/sonHaberler.json şeklinde. Ben bu apiye doğrudan erişimi kaldırmak istiyorum ve sadece bulunduğu siteden gelen post'lara dönüş yapmasını istiyorum. Yani farklı biri kendi sitesinden post ile bu apiyi çağırdığında onda çalışmamalı. JWT ile token kontrolü var sistemimde fakat token kullanmadan daha kolay bi şekilde nasıl bunu çözebilirim ?
Not: $_SERVER['HTTP_SEC_FETCH_SITE'] bu metodu kullandım fakat safaride, mozillada bu metod hiç gelmiyor, bir tek google chrome da "cross-origin", "same-origin" gibi değeler dönüyor.
PHP ile API'e doğrudan erişimi kapatma
6
●386
- 27-01-2020, 20:02:59
- 27-01-2020, 20:08:20İstek yaptığınız adresi PHP ye çevirip çıktısını JSON verecek şekilde ayarlayın ve bir URL parametresi veya Post parametresi ile API key göndeirp handle edin eğer key için erişim izni varsa JSON çıktısını basın yoksa boş JSON çevirebilirsiniz.
- 27-01-2020, 20:26:34Muhtemelen JS ile dom üzerine sayfa load olduktan sonra içerikleri çekiyorsunuz.
Csrf-Token bu tür konularda kullanılıyor hocam. Ekstra güvenlik istiyorsanız DB üzerinde unique bir değer ile tutarak her defasında güncelleyebilirsiniz. Fakat sürekli içerik çekilen bir alansa bu verimli bir kullanım olmayacaktır.
Back-end kısmında belirli bir algoritma ile şifrelenen (url, zaman vs vs gibi) tokenler oluşturup header de göndererek check ederek içerik sunabilirsiniz.
Url yapısı interaktif olabilir , route yapınız buna müsade ediyorsa tabii.
İnşa ettiğiniz sisteme göre daha farklı varyasyonlarda türetebilirsiniz tabi,şimdilik aklıma bunlar geldi. - 27-01-2020, 22:58:17Birkaç yol ile bunu yapabilirsiniz
1 - Api sorgulalarını getirmeden önce statik bir fonksiyon oluşturup içerisine bir değer tanımlayabilirsiniz ardından post isteği geldiğinde tanımladığınız değeri kontrol ettirip değer döndürebilirsiniz
2 - Hosting veya sunucunuz statik ip adresini sabit bir değişkene atayıp her gelen isteğe ait ip adreslerini kontrol ettirip bir değer döndürerek bunu yapabilirsiniz
3 - Access Token mantığı ile bu sorunun önüne geçebilirsiniz
4 - HTTP Referer header'ını kullanarak siteniz dışında gelen istekleri engelleyebilirsiniz
5 - Zamanlayıcı özelliği olan random string oluşturan bir fonksiyon yazabilirsiniz. Oluşturulan her alfanümerik random string'i kaydını tutup belirli sürelerde sıfırlayabilirsiniz
6 - HTTP Auth mantığını kullanarak bir kontrol mekanizma oluşturabilirsiniz
Aklıma gelen en basit çözümler bunlar ama benim size tavsiyem 1 , 3 ve 2. Maddeler olacaktır.
Kolay Gelsin - 28-01-2020, 02:15:31Sunucu bazlı olmayan her işlem yani client tarafı ile alınan her önlem aşılabiliyor. Örnek vereyim; Spotify api mantığı ile login oluyor cookie'n yoksa 401 döndürüyor, referer spotify değilse 401 döndürüyor özel token veriyor ama onu da cookie içinde tutuyor bot yapan ya da api yapan kişi anasiteye istek atıyor cookieleri alıyor ve ikinci isteğinde cookie içindeki tokeni kullanarak yapıyor. O yüzden server taraflı koruma bulmaya çalışın hocam.