﻿
{"id":15461,"date":"2020-04-24T15:27:21","date_gmt":"2020-04-24T15:27:21","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=15461"},"modified":"2020-04-24T15:27:21","modified_gmt":"2020-04-24T15:27:21","slug":"asp-net-core-hassas-verilerin-korunmasisecret-manager-tool","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-hassas-verilerin-korunmasisecret-manager-tool\/","title":{"rendered":"Asp.NET Core &#8211; Hassas Verilerin Korunmas\u0131(Secret Manager Tool)"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Web uygulamalar\u0131nda development ortam\u0131nda kulland\u0131\u011f\u0131m\u0131z baz\u0131 verilerimizin canl\u0131ya deploy edilmesini istemeyebiliriz. Bu verilerimiz; veritaban\u0131 bilgilerini bar\u0131nd\u0131ran connection string bilgisi, bir kritik arz eden token de\u011feri yahut Facebook veya Google gibi third party authentication i\u015flemleri yapmam\u0131z\u0131 sa\u011flayan client secret id de\u011ferleri olabilir. Bu veriler development ortam\u0131nda kullan\u0131l\u0131rken, production ortam\u0131nda k\u00f6t\u00fc niyetli ki\u015filerin uygulama dosyalar\u0131na eri\u015fim sa\u011flad\u0131klar\u0131 durumlarda elde edemeyecekleri vaziyette bir \u015fekilde ezilmeleri gerekmektedir. \u0130\u015fte bunun i\u00e7in <em>Secret Manager Tool<\/em> geli\u015ftirilmi\u015ftir.<\/p>\n<p><strong>Secret Manager Tool Nedir?<\/strong><br \/>\nWeb uygulamalar\u0131nda statik olan verileri tekrar tekrar yazmak yerine bir merkezde depolayarak kullanmay\u0131 tercih ederiz. Asp.NET Core uygulamalar\u0131nda bu merkez genellikle &#8216;appsettings.json&#8217; dosyas\u0131 olmaktad\u0131r. Bu dosya i\u00e7erisine yaz\u0131lan de\u011ferler her ne olursa olsun uygulama publish edildi\u011fi taktirde \u00e7\u0131kt\u0131dan eri\u015filebilir vaziyette olacakt\u0131r. Dolay\u0131s\u0131yla bizler statik verilerimizi &#8216;appsettings.json&#8217; i\u00e7erisinde tutabiliriz lakin kritik verilerimiz i\u00e7in buras\u0131n\u0131n pekte ehemmiyetli bir yer olmad\u0131\u011f\u0131 a\u015fikard\u0131r.<\/p>\n<p>Development s\u00fcrecinde kritik verilerimizi Secret Manager Tool&#8217;un sa\u011flam\u0131\u015f oldu\u011fu &#8216;secrets.json&#8217; dosyas\u0131 sayesinde uygulamadan ay\u0131rabilir ve b\u00f6ylece &#8216;appsettings.json&#8217;a eri\u015filse dahi kritik verilerimize eri\u015filemeyece\u011finden dolay\u0131 g\u00fcvenli bir \u015fekilde depolamay\u0131 sa\u011flam\u0131\u015f oluruz. Her ne kadar &#8216;secrets.json&#8217; dosyas\u0131ndaki veriler uygulama i\u00e7erisinde tutulmasada, runtime&#8217;da uygulama aya\u011fa kald\u0131r\u0131ld\u0131\u011f\u0131 anda &#8216;appsettings.json&#8217; dosyas\u0131 ile &#8216;secrets.json&#8217; dosyas\u0131 birle\u015ftirilerek ilgili veriler uygulama i\u00e7in eri\u015filebilir olacakt\u0131r. Nihayetinde kritik verilerin k\u00f6t\u00fc niyetli ki\u015filer taraf\u0131ndan eri\u015fimine kesin bir engel koyulmu\u015f olunacakt\u0131r.<\/p>\n<p>Secret Manager Tool&#8217;a eri\u015febilmek i\u00e7in uygulamaya sa\u011f t\u0131klayarak &#8216;Manage Usage Secrets&#8217; sekmesine t\u0131klay\u0131n\u0131z.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool.jpg\" alt=\"Asp.NET Core - Hassas Verilerin Korunmas\u0131(Secret Manager Tool)\" width=\"308\" height=\"398\" class=\"aligncenter size-full wp-image-15474\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool.jpg 308w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-232x300.jpg 232w\" sizes=\"auto, (max-width: 308px) 100vw, 308px\" \/><\/a><br \/>\nBu kombinasyon neticesinde kar\u015f\u0131n\u0131za &#8216;secrets.json&#8217; dosyas\u0131 gelecektir. \u0130\u015fte bu dosya bizim i\u00e7in hassas verilerin bar\u0131nd\u0131r\u0131laca\u011f\u0131 nitelikte olan mevzu bahis dosyad\u0131r&#8230;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n{\r\n  &quot;ConnectionString&quot;: &quot;Server=123.321.234.212;Database=ExampleDb;User Id=sa;Password=123321;&quot;\r\n}\r\n<\/pre>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere ilgili dosyaya \u00f6rnek olarak bir connection string bilgisi koyulmu\u015ftur. Uygulamay\u0131 publish edip &#8216;appsettings.json&#8217; dosyas\u0131na g\u00f6z atarsan\u0131z e\u011fer bu verinin orada olmad\u0131\u011f\u0131n\u0131 g\u00f6receksiniz.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-1.jpg\" alt=\"Asp.NET Core - Hassas Verilerin Korunmas\u0131(Secret Manager Tool)\" width=\"435\" height=\"331\" class=\"aligncenter size-full wp-image-15478\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-1.jpg 435w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-1-300x228.jpg 300w\" sizes=\"auto, (max-width: 435px) 100vw, 435px\" \/><\/a><\/p>\n<p>Lakin uygulamay\u0131 development ortam\u0131nda \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda &#8216;secrets.json&#8217; da ki veriye ula\u015f\u0131labilecektir.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-2.jpg\" alt=\"Asp.NET Core - Hassas Verilerin Korunmas\u0131(Secret Manager Tool)\" width=\"724\" height=\"55\" class=\"aligncenter size-full wp-image-15480\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-2.jpg 724w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-2-300x23.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-2-720x55.jpg 720w\" sizes=\"auto, (max-width: 724px) 100vw, 724px\" \/><\/a><\/p>\n<p>\u015eimdi burada akl\u0131n\u0131za muhtemel iki soru gelmi\u015f olabilir.<\/p>\n<ul>\n<li>1. Soru : &#8216;secrets.json&#8217;a sadece development ortam\u0131ndan ula\u015f\u0131labildi\u011finden bahsedildi. Peki production ortam\u0131ndan ula\u015f\u0131lmak istenseydi?<\/li>\n<li>2. Soru : &#8216;secrets.json&#8217; uygulama i\u00e7erisinde tutulmuyorsa o halde nerede tutuluyor?<\/li>\n<\/ul>\n<p>Sorulara tersinden cevaplayarak ba\u015flayay\u0131m \ud83d\ude42<\/p>\n<p>2. Sorunun Cevab\u0131 : &#8216;secrets.json&#8217; dosyas\u0131na yaz\u0131lan de\u011ferler uygulaman\u0131n i\u00e7erisinde tutulmamakta, uygulaman\u0131n geli\u015ftirildi\u011fi bilgisayarda &#8216;<em style=\"color:blue;font-size:10px;\">C:\\Users\\<span style=\"color:red;\">name<\/span>\\AppData\\Roaming\\Microsoft\\UserSecrets<\/em>&#8216; dizininde tutulmaktad\u0131r. \u0130lgili dizine girildi\u011fi taktirde<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-3.jpg\" alt=\"Asp.NET Core - Hassas Verilerin Korunmas\u0131(Secret Manager Tool)\" width=\"551\" height=\"247\" class=\"aligncenter size-full wp-image-15487\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-3.jpg 551w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-3-300x134.jpg 300w\" sizes=\"auto, (max-width: 551px) 100vw, 551px\" \/><\/a><br \/>\ng\u00f6r\u00fcn\u00fcm\u00fcnde bir klas\u00f6r i\u00e7eri\u011fiyle kar\u015f\u0131lanabilirsiniz. Burada hangi klas\u00f6r\u00fcn ilgili projenizin secret keyini bar\u0131nd\u0131rd\u0131\u011f\u0131n\u0131 merak ediyorsan\u0131z projenizin .csproj dosyas\u0131na g\u00f6z atman\u0131z yeterli olacakt\u0131r.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-4.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-4.jpg\" alt=\"Asp.NET Core - Hassas Verilerin Korunmas\u0131(Secret Manager Tool)\" width=\"697\" height=\"141\" class=\"aligncenter size-full wp-image-15488\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-4.jpg 697w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-4-300x61.jpg 300w\" sizes=\"auto, (max-width: 697px) 100vw, 697px\" \/><\/a><br \/>\n&#8216;secrets.json&#8217; dosyas\u0131na yap\u0131lan herhangi bir kay\u0131t neticesinde buraya &#8216;UserSecretsId&#8217; de\u011feri atanmaktad\u0131r. Bu de\u011fer e\u015fli\u011finde uygulaman\u0131za ait secret keylerin hangi dizinde oldu\u011funu rahatl\u0131kla bulabilirsiniz.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-5.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-5.jpg\" alt=\"Asp.NET Core - Hassas Verilerin Korunmas\u0131(Secret Manager Tool)\" width=\"703\" height=\"409\" class=\"aligncenter size-full wp-image-15491\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-5.jpg 703w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-5-300x175.jpg 300w\" sizes=\"auto, (max-width: 703px) 100vw, 703px\" \/><\/a><br \/>\n\u0130\u015fte bulduk \ud83d\ude42 \u0130lgili dizine gelip i\u00e7erisindeki dosyay\u0131 not defteriyle a\u00e7arsan\u0131z e\u011fer secret key&#8217;e eri\u015febilirsiniz&#8230;<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-6.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-6.jpg\" alt=\"Asp.NET Core - Hassas Verilerin Korunmas\u0131(Secret Manager Tool)\" width=\"792\" height=\"219\" class=\"aligncenter size-full wp-image-15493\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-6.jpg 792w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-6-300x83.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-6-768x212.jpg 768w\" sizes=\"auto, (max-width: 792px) 100vw, 792px\" \/><\/a><\/p>\n<p>1. Sorunun Cevab\u0131 : Production ortam\u0131nda &#8216;secrets.json&#8217;a eri\u015filememektedir. Lakin bu durum production&#8217;da &#8216;appsettings.json&#8217; kullan\u0131lacak anlam\u0131na gelmemektedir. Bunun i\u00e7in environment de\u011fi\u015fkenler kullan\u0131lmal\u0131d\u0131r. Misal olarak, Docker ile production ortamda uygulamay\u0131 aya\u011fa kald\u0131r\u0131yorsan\u0131z e\u011fer <code style=\"color:red;\"><strong>docker run --rm -p 1071:1453 --env ConnectionString=\"asdasdasdasd\" --name cont1 secretexample:v1<\/strong><\/code> komutuyla environment&#8217;\u0131 belirleyebilirsiniz.<\/p>\n<p><strong>&#8216;appsettings.json&#8217; \u0130le Birlikte &#8216;secrets.json&#8217; Kullan\u0131m\u0131<\/strong><br \/>\nBazen uygulamalarda hem &#8216;appsettings.json&#8217; hem de &#8216;secrets.json&#8217; dosyalar\u0131n\u0131 ayn\u0131 anda kullanmay\u0131 tercih edebiliriz. \u00d6rne\u011fin; &#8216;appsettings.json&#8217; dosyas\u0131 connection string bilgisinin genel ge\u00e7er yolunu, &#8216;secrets.json&#8217; ise \u015fifresini tutsun istiyorsan\u0131z a\u015fa\u011f\u0131dakine benzer bir kullan\u0131m sergileyebilirsiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n-- appsettings.json --\r\n{\r\n  &quot;ConnectionString&quot;: &quot;Server=123.321.234.212;Database=ExampleDb;User Id=sa;&quot;,\r\n  &quot;Logging&quot;: {\r\n    &quot;LogLevel&quot;: {\r\n      &quot;Default&quot;: &quot;Information&quot;,\r\n      &quot;Microsoft&quot;: &quot;Warning&quot;,\r\n      &quot;Microsoft.Hosting.Lifetime&quot;: &quot;Information&quot;\r\n    }\r\n  },\r\n  &quot;AllowedHosts&quot;: &quot;*&quot;\r\n}\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n-- secrets.json --\r\n{\r\n  &quot;SQLPassword&quot;: &quot;123321;&quot;\r\n}\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            string connectionString = configuration&#x5B;&quot;ConnectionString&quot;];\r\n            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectionString);\r\n            builder.Password = configuration&#x5B;&quot;SQLPassword&quot;];\r\n\r\n            connectionString = builder.ConnectionString;\r\n<\/pre>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-7.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-7.jpg\" alt=\"Asp.NET Core - Hassas Verilerin Korunmas\u0131(Secret Manager Tool)\" width=\"757\" height=\"133\" class=\"aligncenter size-full wp-image-15500\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-7.jpg 757w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Asp.NET-Core-Hassas-Verilerin-Korunmas\u0131Secret-Manager-Tool-7-300x53.jpg 300w\" sizes=\"auto, (max-width: 757px) 100vw, 757px\" \/><\/a><\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Web uygulamalar\u0131nda development ortam\u0131nda kulland\u0131\u011f\u0131m\u0131z baz\u0131 verilerimizin canl\u0131ya deploy edilmesini istemeyebiliriz. Bu verilerimiz; veritaban\u0131 bilgilerini bar\u0131nd\u0131ran connection string bilgisi, bir kritik arz eden token de\u011feri yahut Facebook veya Google gibi third party authentication&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":15425,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3102,2898,3103],"tags":[2679,3469,3468,3467,3104,3470],"class_list":["post-15461","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net-core","category-asp-net-core-3-0","category-asp-net-core-3-1","tag-asp-net-core","tag-asp-net-core-secret-key","tag-asp-net-core-secret-manager-tool","tag-secret-manager-tool","tag-secrets-json","tag-sqlconnectionstringbuilder"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=15461"}],"version-history":[{"count":33,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15461\/revisions"}],"predecessor-version":[{"id":15502,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15461\/revisions\/15502"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/15425"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=15461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=15461"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=15461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}