Kısa süre önce bir okuyucumuzdan burada sıkça duyduğumuz bir soru aldık: “WordPress sitemde REST API’yi nasıl devre dışı bırakabilirim?” Ve dürüst olmak gerekirse, bu geçerli bir endişe.
WordPress 4.4 sürümü JSON REST API ile yayınlandığında, geliştiriciler için bir olasılıklar dünyasının kapılarını açtı. Ancak birçok site sahibi bunu gereksiz buluyor ve getirdiği potansiyel güvenlik açıkları konusunda endişeleniyor.
Bu makalede, WordPress’te JSON REST API’yi nasıl kolayca devre dışı bırakacağınızı göstereceğiz.
WordPress’te JSON REST API Neden Devre Dışı Bırakılmalı?
API ‘nin WordPress geliştiricileri için pek çok faydası olduğu inkar edilemez. API, WordPress ile uygulama geliştirenler için yararlı olan GET isteklerini kullanarak veri almayı çok kolay hale getiriyor.
Bununla birlikte, bu potansiyel olarak web sitenizi DDoS saldırılarının yeni bir cephesine açabilir. Ayrıca kaynak yoğun olabilir ve WordPress web sitenizi yavaşlatabilir.
JSON REST API’yi devre dışı bırakmak, birçok site yöneticisinin WordPress sitelerinde güvenli tarafta olmak için devre dışı bıraktığı XML-RPC‘yi devre dışı bırakmaya benzer.
WordPress’te JSON REST API’yi kolayca devre dışı bırakmak için size iki yöntem göstereceğiz. Kullanmak istediğiniz yönteme geçmek için aşağıdaki hızlı bağlantıları kullanmanız yeterlidir.
Yöntem 1. WordPress’te JSON REST API’yi Kod ile Devre Dışı Bırakma (Önerilen)
WordPress’te JSON REST API’yi devre dışı bırakmak için WPCode eklentisini kullanmanızı öneririz.
WPCode, temanızın functions.php dosyasını düzenlemeden WordPress’e özel kod eklemeyi güvenli ve kolay hale getirir. Bu şekilde, hata yapma ve sitenizi bozma riski yoktur.
Ayrıca, REST API’yi devre dışı bırakma, XML-RPC’yi devre dışı bırakma ve çok daha fazlası gibi popüler özellik istekleri için doğrulanmış kod parçacıkları içeren yerleşik bir kod kitaplığı ile birlikte gelir. Bu, bir sürü tek kullanımlık eklenti yüklemek zorunda kalmanızı önler.
Başlamak için ücretsiz WPCode eklentisini yüklemeniz ve etkinleştirmeniz gerekir. Adım adım talimatlar için WordPress eklentisinin nasıl kurulacağına ilişkin kılavuzumuzu okuyun.
Not: WPCode’un ücretsiz sürümü WordPress’e kolayca özel kod eklemek için ihtiyacınız olan her şeye sahiptir. Ancak, özel bulut parçacıkları kitaplığı, sayfaya ve cihaza özel parçacıklar, kod revizyonları ve daha fazlası gibi gelişmiş özellikler istiyorsanız, WPCode Pro‘ya yükseltebilirsiniz.
Eklenti etkinleştirildikten sonra, WordPress panonuzdan Code Snippets ” Library bölümüne gidin.
Ardından, ‘WordPress REST API’yi Devre Dışı Bırak’ snippet’ini arayın ve ‘Snippet’i kullan’ düğmesine tıklayın.
Eklenti daha sonra kodu otomatik olarak ekleyecek ve uygun ekleme yöntemini seçecektir.
Tek yapmanız gereken anahtarı ‘Etkin Değil’den ‘Etkin’e geçirmektir.
Ardından, ‘Güncelle’ düğmesine tıklayın.
İşte bu kadar. Artık WordPress sitenizde JSON REST API devre dışı bırakılmıştır.
Yöntem 2. WordPress’te JSON REST API’yi Bir Eklenti ile Devre Dışı Bırakma
Ayrıca özel bir eklenti yardımıyla JSON REST API’yi kolayca devre dışı bırakabilirsiniz.
Yapmanız gereken ilk şey Disable REST API eklentisini yüklemek ve etkinleştirmektir. Daha fazla ayrıntı için, bir WordPress eklentisinin nasıl kurulacağına ilişkin adım adım kılavuzumuza bakın.
Eklenti kutudan çıktığı gibi çalışır ve yapılandırmanız gereken herhangi bir ayar yoktur.
Etkinleştirmenin ardından eklenti, web sitenizde oturum açmamış kaynaklardan gelen tüm API isteklerine zorla bir kimlik doğrulama hatası döndürecektir.
Bu, yetkisiz isteklerin web sitenizden bilgi almak için REST API’sini kullanmasını etkili bir şekilde önleyecektir.
Bunu http://example.com/wp-json sayfasını ziyaret ederek test edebilirsiniz. Önce WordPress yönetici alanından çıkış yaptığınızdan veya tarayıcınızı gizli moda geçirdiğinizden emin olun.
example.com yerine kendi alan adınızı yazmayı unutmayın. REST API isteklerinin engellendiğini belirten bu mesajı göreceksiniz.
Hepsi bu kadar, WordPress sitenizdeki yetkisiz REST API isteklerini başarıyla devre dışı bıraktınız.
Umarız bu makale WordPress’te JSON API’nin nasıl devre dışı bırakılacağını öğrenmenize yardımcı olmuştur. Güvenlik bilincine sahip kullanıcılar ayrıca WordPress yönetici alanını korumaya yönelik bu ipuçlarına göz atmak ya da en iyi WordPress yedekleme eklentilerini seçmemizi bekleyebilirler.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
RJW
I’d try the disable plugin in Dev environment before production, I found installing it broke some features
WPBeginner Support
If you have many different plugins and tools and have a testing environment then it would definitely be good to test new plugins and how they interact with your site.
Yönetici
Ricky
Similar to an above commenter, I’ve noticed the “wp-json” request when using Pingdom and other testing sites. Unfortunately, mine takes over 10 seconds (Yes really!!) to load it. This pushes my overall website load time and I can’t figure out how to fix this. The plugin doesn’t change it at all. Any suggestions?
Janice
How do I know if I actually have JSON API on my website?
This article about removing it is good – if I need it – but I have often been alarmed by certain warnings only to find that they’ve not even applicable to me.
WPBeginner Support
Hey Janice,
If you are using a self-hosted WordPress.org site, then you do have JSON REST API available on your website.
Yönetici
Logan Cale
I hate adding yet another plugin to do a simple tasks, and I found that we can disable this functionality by adding the following code snippet to the functions.php file.
add_filter(‘rest_enabled’, ‘_return_false’);
add_filter(‘rest_jsonp_enabled’, ‘_return_false’);
Margarit Koka
Thank you bro, your answer is what I was looking when visiting this page.
Bobby C.
Thank you! Straight to the point.
Hari
I was looking for this code, it worked, thanks, I don’t prefer adding plugins.
Michael
Thanks for your help. There is no ‘add new’ option in my plugins.
WPBeginner Support
You are probably using WordPress.com. Please see our guide on the difference between self hosted WordPress.org vs free WordPress.com blog.
Yönetici
Lynne
Thank you! Spot on worked for me
J.L.
Is this just for self hosted blogs or including free blog sites? Per mostly all plug ins…etc are done for you when you’re not self hosted
PS I’m not subscribing…just want a response
WPBeginner Support
This is for self hosted WordPress.org sites only.
Yönetici
Elaine
How can I check if my site has Rest API. I turned off a lot of extras when I first set it up but now don’t know where to look to see if it’s there. Not keen to download a plugin unnecessarily.
WPBeginner Support
Hey Elaine,
You can check if rest is api is enabled on your site by visiting the url like this example.com/wp-json. Make sure you are signed out of WordPress before doing that. If you see lots of information in plain text, then this means REST API is enabled on your site. Follow the above instructions to turn it off
Yönetici
Saransh Jain
What about the option to disable json rest api in Jetpack plugin?
Ken Dowling
Is disabling REST API suitable for e-commerce sites such as WooCommerce? My understanding is that WooCommerce uses REST-API quite a bit.
Further, my buyers do not have to login to buy, so what happens to the transaction when a REST API call is rejected?
Regards, Ken
D. Joe Chaffin
Plug-in makes no difference for me in WP 4.7.2. With the plugin activated or disabled, the example.com/wp-json (with my domain replacing “example”) pages gives a massive list of settings for my site.
D. Joe Chaffin
Hmmmm. Now that I look at it, I only see the list in Safari, while Chrome and Firefox for Mac show the expected message specified in this post.
WPBeginner Support
Hi,
Make sure you are logged out of WordPress admin area or use incognito mode before testing the example.com/wp-json page. The plugin disables access to the page only for unauthorized users. As an administrator you will still be able to see it.
Yönetici
D. Joe Chaffin
Embarrassed… You are right, of course.
Audra Carpenter
Hey Guys,
First off thanks so much for what you do! I’ve learned so much about Wordpress from you and sent a ton of folks your way!!
Ok, I installed the plugin, but I am not seeing what you suggest above? I have a full screen of information…?
Thoughts?
Thanks!
WPBeginner Support
Hi Audra,
Please logout or use incognito window to test. The plugin only disables access for non-logged in users.
Yönetici
Treasure
I followed these steps, but when I went to check it with the example etc., I got 2 pages of code, not the response showed above. Hmmm, don’t know what to do.
Treasure
Alright, I did it again and got the right message. Thanks!
Doug Nix
When I ran the test I think it failed, as I got a boatload of data on screen. Any idea what might have not worked? I installed the plugin as described…
Doug Nix
Works perfectly when I check using an incognito window. Thanks for the explanation regarding authorised vs unauthorised or anonymous users.
Laura Zielke
Worked perfectly. Thank you!
Karl
Thanks for the tip as well as for the hook to disable XMLRPC.
Is there a chance for a filter hook for the REST API as well?
Andrew
When I check the speed of my site using pingdom.com, the first html entry that tried to load shows the link as mydomain.com/wp-json and it has over 2 seconds of “wait” time. Is this the same as what this article is talking about? I’m hesitant to simply disable it since I would assume it will be used in the future. Any idea why it would add a 2+ second delay to loading anything on the page?
Stephen Cronin
Hmm, the REST API is going to become the standard way for plugins and themes to make Ajax calls back to the server from the front end, replacing admin-ajax, so I wouldn’t be disabling it… Hopefully they will fail gracefully, but you will almost end up missing some functionality.
Also, if you really want to protect against DDoS attacks, you better disable html as well!
reza
ver 50,000 WordPress websites have been hacked due to a major security vulnerability that was discovered in the WordPress REST API.
Jim S Smith
OUCH!
That’s disturbing to know. I have noticed a LOT of access attempts in my site’s logs.
What’s more,
I think the folks at WordPress could have done a little better in letting the users decide how much, if at all, they want the REST API exposed.
Again,
More of this, “The developers know MORE about the user’s needs than the user does!” – I also was not too happy about being forced to support EMOJI and remote-loaded fonts from fonts.google.com, even though my sites do not use them!
The REST API may be a boon for (some) actual web-application developers, but what about the rest of us who will not very likely use this? ? ?
Kasey
How likely is it that a plugin will be using this functionality. Just for example would contact forms be utilizing this? Not keen on turning it off in case it breaks anything.
WPBeginner Support
The plugins will most likely notify you if they will be using it and you have it turned off.
Yönetici