Esnekliği ve kullanım kolaylığı sayesinde WordPress içerik yönetim sistemi (CMS), web sitesi oluşturmak için en çok kullanılan platform haline geldi. Özellikleri sürekli geliştirilmekte ve programlama deneyimleri ne olursa olsun, giderek artan sayıda kullanıcıya bir web sitesi oluşturma şansı verilmektedir. Bununla birlikte sürekli iyileştirilmesinin bir sonucu olarak, bazı WordPress özellikleri genel WordPress topluluğu tarafından daha az bilinir ve bunun yerine çoğunlukla geliştiriciler tarafından kullanılır. Bu makalede, bu özelliklerden biri olan WordPress’teki JSON REST API’sine ışık tutacağız. Ne olduğunu ve devre dışı bırakmanız gerekip gerekmediğini ve bunu yapmak için atmanız gereken adımları tartışacağız.
Neden WordPress’te JSON REST API’sini devre dışı bırakmak isteyebilirsiniz?
WordPress JSON REST API, WordPress 4.4 güncellemesinde tanıtılan ve hala tartışmalara yol açan, geliştirici odaklı bir özelliktir. REST veya Temsili Durum Aktarımı, etkileşimli Web hizmetleri oluşturmak için yaygın olarak kullanılan bir tür yazılım mimarisidir. Daha doğrusu web sitenizi kullanılabilir bir web servisine dönüştürür. Bu durum diğer uygulamaların veya web hizmetlerinin, belirli HTTP GET istekleri göndererek web sitenizde bulunan bazı bilgileri çıkarabileceği anlamına gelir. WordPress REST API tamamen yapılandırılmış JSON verilerine dayanır, bu nedenle bazıları onu JSON REST API olarak adlandırır. Biçimlendirilmemiş olmasına rağmen JSON verilerinin bir örneği aşağıda gösterilmiştir. Bu veriler, web sitenizin URL’sinin sonuna /wp-json eklenerek oluşturulan REST API kök yoluna erişirken görüntülenir.
Biçimlendirilmemiş JSON verilerinin okunması zor olsa da, bazı WordPress veya kullanıcıyla ilgili verilere belirli REST API yollarına gidilerek herkesin erişebilmesi nedeniyle yine de bir güvenlik riski oluşturur. Örneğin /wp-json/wp/v2/users rotasına erişerek, belirli bir web sitesinin kullanıcı ile ilgili verilerine erişebilirsiniz. Web sitesi kullanıcılarının şifrelerini bu şekilde alamasanız da, yalnızca kullanıcı adlarını bilmek, web sitesini kaba kuvvet saldırılarına karşı savunmasız bırakır. Bu yüzden bazı WordPress kullanıcıları WordPress REST API’sini devre dışı bırakmayı tercih ediyor. Fakat aramanızı yapmadan önce daha fazla bilgi toplamanızı öneririz.
WordPress çekirdek dosyaları güncellendikçe ve daha parlak hale geldikçe, REST API’sinin de geliştiğini anlamak önemlidir. Püf Nokta: REST API kullanımı birçok eklentinin ve tema işlevinin ayrılmaz bir parçası haline geldi. Bu yüzden REST API’yi devre dışı bırakmadan önce mevcut temanızın ve eklentilerinizin yazarlarına danışmalısınız. Aksi takdirde, temanızın ve eklentilerinizin bazı işlevlerini işe yaramaz hale getirme riskiyle karşı karşıya kalırsınız.
Ayrıca mevcut varsayılan WordPress düzenleyicisi olan Gutenberg’in bile sayfaları ve gönderileri düzenlemek için bazı REST API yollarına güvendiğini bilmelisiniz. REST API’yi devre dışı bırakmayı düşünüyorsanız ve tercih ettiğiniz düzenleyici Gutenberg ise, devre dışı bırakma işlemini gerçekleştirirseniz sayfaları ve gönderileri yayınlayamaz veya güncelleyemezsiniz.
Tüm bunların önemli bir sorun teşkil ettiğini söylemekle yetinelim. REST API’nin devre dışı bırakılmasını içermeyen potansiyel bir çözüm, kimliği doğrulanmamış kullanıcılara erişimi rota bazında kısıtlamaktır. Aşağıda REST API’sini devre dışı bırakmak için bir eklentinin nasıl kullanılacağını açıklarken bunun nasıl yapılacağını ele alacağız. Yine de, herhangi bir kısıtlama uygulamaya çalışmadan önce tema ve eklenti yazarlarınıza danışmak şarttır. İşlevlerine zarar vermeden web sitenizin genel güvenliğini artırmanın tek kesin yolu budur.
WordPress’te JSON REST API nasıl devre dışı bırakılır
Artık birisinin neden WordPress’te JSON REST API’yi tamamen veya kısmen devre dışı bırakmak isteyebileceğini anladığınıza göre, bunun nasıl yapılabileceğini açıklayalım. Aşağıdaki bölümlerde, iki olası yöntemi ele alacağız: bir WordPress eklentisi kullanmak veya özel kod kullanmak.
Eklenti kullanma
Piyasada çok sayıda WordPress eklentisi vardır ve bu da neredeyse her amaç için uygun olanı bulmayı nispeten kolaylaştırır. Bu durumda, aşağıdaki adımları özetlemek için kullanacağımız REST API’yi Devre Dışı Bırak eklentisini bulduk. Bu eklenti çok esnektir; yalnızca belirli kullanıcı türleri için REST API’yi tamamen devre dışı bırakmaya veya bazı yolları devre dışı bırakmaya hizmet edebilir.
JSON REST API’yi WordPress’te tamamen devre dışı bırakmak için, yalnızca bu eklentiyi yüklemeniz ve etkinleştirmeniz gerekir. Bu durum kimliği doğrulanmamış kullanıcıların tüm JSON REST API yollarına varsayılan olarak erişmesine izin vermeyecektir.
Bu eklenti ayrıca REST API erişimine kısmen izin verme veya vermeme imkanı sunar. Daha kesin olarak, kimliği doğrulanmamış kullanıcılar veya belirli kullanıcı rollerine sahip kullanıcılar tarafından hangi yollara erişilebileceğini belirtmenize olanak tanır. Bunu ayarlamak için Ayarlar > REST API’yi Devre Dışı Bırak’a gidin. Ardından Kurallar: seçeneğiyle uygun kullanıcı türünü seçin ve aşağıdaki Kuralları Yönet bölümünde istediğiniz kuralları belirleyin.
Açıklığa kavuşturmak için, bu kurallar belirli REST API yollarının kullanımına izin verir veya vermez. Bu rotalar, belirli bir veri türünü elde etmek için REST API kök URL’sine (web sitenizin-url’si/wp-json/) ekleyebileceğiniz URL’nin bölümlerini temsil eder. Bazı durumlarda, bu yolların bazı bölümleri normal ifadeler içerebilir. Bunun örneklerini yukarıdaki ekran görüntüsünde görebilirsiniz.
Bununla birlikte kimliği doğrulanmamış kullanıcılar ve web sitesinde bulunan herhangi bir kullanıcı rolünün kullanıcıları için kurallar belirlemeyi seçebilirsiniz. Bunu yaptıktan sonra, belirli bir kullanıcı türü için REST API erişimine tamamen izin verme veya mevcut her yol için erişimi manuel olarak ayarlama seçeneğine sahip olacaksınız.
Belirli bir kullanıcı türü için REST API erişimine tam olarak izin vermek için, REST API Erişimini Yönet seçeneğini belirleyin ve ardından web sitenizde bulunan ad alanlarının veya yolların her birinin yanındaki anahtarı değiştirin. Seçenekleri ihtiyacınıza göre ayarlarken alttaki Save Changes butonuna basarak kaydetmeyi unutmayınız. Belirli bir kullanıcı türüne yönlendirmeye izin verilmedikten sonra, bu kullanıcılar ona erişmeye çalıştıklarında bir hata mesajı alırlar. Aşağıda gösterilen mesaja benzer görünecektir.
Özel kod kullanma
Çoğu WordPress kullanıcısı, uygulaması en kolay yöntem olduğu için eklenti yöntemini tercih etme eğilimindedir. Fakat REST API’yi devre dışı bırakmanın başka bir yolu daha vardır ve bu da özel kod kullanmaktır. Bu yöntemin avantajları, potansiyel olarak web sitenizi yavaşlatabilecek veya web sitenize zarar verebilecek ek eklentilerden kaçınabilmenizdir. Fakat bu yöntemi kullanarak REST API’yi tamamen devre dışı bırakabilirsiniz.
Adımları, temanızın functions.php dosyasına veya siteye özel bir eklentiye küçük bir kod parçacığı yerleştirmeyi içerir. Bunu functions.php dosyasını kullanarak nasıl yapacağınızı size göstereceğiz. Fakat daha ileri gitmeden önce web sitenizin bir yedeğini almanızı öneririz. Bu hem iyi bir uygulama hem de iyi bir önlemdir. Bunu yaptıktan sonra, aşağıda açıklanan şekilde ilerleyin.
İlk olarak, FTP kimlik bilgilerinizi kullanarak sunucunuza bağlanmanız ve genellikle public_html olarak adlandırılan kök WordPress dizinine gitmeniz gerekir.
Daha sonra /wp-content/themes dizinine gidin ve açmak için o anda etkin olan temanızın dizinine tıklayın. İçinde functions.php dosyasını bulun, üzerine sağ tıklayın ve açılır menüden Görüntüle/Düzenle seçeneğini seçin.
Tercih ettiğiniz metin düzenleyiciyi kullanarak dosyayı açın ve altına aşağıdaki kodu ekleyin.
function qode_disable_rest_api( $access ) { return new WP_Error( 'rest_disabled', __( 'The WordPress REST API has been disabled.' ), array( 'status' => rest_authorization_required_code() ) ); } add_filter( 'rest_authentication_errors', 'qode_disable_rest_api' );
Daha sonra dosyada yaptığınız değişiklikleri kaydedin ve eski sürümünü orada geçersiz kılmak için sunucuya geri yükleyin.
Bundan sonra, web sitenizde bulunan JSON REST API yollarından birini inceleyerek her şeyin olması gerektiği gibi çalışıp çalışmadığını kontrol edin. WordPress web siteniz için REST API’yi başarıyla devre dışı bıraktıysanız, bu yola erişmeye çalışırken bir hata mesajı alırsınız.
Fakat çeşitli izin verme/izin vermeme seçenekleri sunan eklenti yönteminin aksine, bu kodun tüm REST API yollarına erişimi engelleyeceğini unutmayın. Bu yüzden bu iki yöntemden hangisinin ihtiyaçlarınıza daha uygun olduğuna karar vermelisiniz.
Çözüm Yolu
WordPress REST API, her beceri seviyesinden kullanıcının bilmesi gereken çok kullanışlı, geliştirici odaklı bir özelliktir. Uygun HTTP isteklerini kullanarak web sitesiyle hızlı bir şekilde etkileşime geçmenizi sağlar. Bununla birlikte bir web sitesine verebileceği potansiyel zararın aksine yararlılığına ilişkin açık bir tartışma vardır. Bu makalede, bu tartışmadan bazı noktaları sunduk ve WordPress REST API’sini nasıl devre dışı bırakabileceğinizi ele aldık. Açıkladığımız yöntemler nispeten kolay olduğu için siteniz için JSON REST API’yi dakikalar içinde devre dışı bırakabileceğinizden eminiz.