Özet
Bir ödeme eklentisi içinde API anahtarı olmadan gelmelidir; Paymos paketi de öyle gelir. Arşiv her satıcı için aynıdır ve içinde API anahtarı, API gizli anahtarı, proje kimliği, webhook anahtarı, OAuth belirteci ya da cihaz kodu bulunmaz. Kurulum bunları elle de eklemez: mağazayı bağlamak tek bir yetkilendirmedir ve anahtarlar, webhook ile proje bağı o tek adımda hazırlanır. Satıcı başına üretilen bir paket, kurulumu kısaltmak için canlı bir gizli anahtarı bir dosyaya yazar; o dosya da yedeklere, destek kayıtlarına ve sürüm kontrolüne gider. İki kontrol — bir arama ve bir sağlama toplamı — size hangisinin verildiğini söyler.
Paymos eklenti paketi kimlik bilgisi taşımaz. Satıcının WooCommerce, Magento 2 ya da diğer altı resmi eklenti için indirdiği arşiv, diğer her satıcının indirdiği arşivin aynısıdır; içinde API anahtarı, API gizli anahtarı, proje kimliği, webhook anahtarı, OAuth belirteci ya da cihaz kodu bulunmaz. İndirmek hiçbir şeyi bağlamaz.
Sonraki bir adım da onları oraya koymaz. Mağazayı bağlamak tek bir yetkilendirmedir; anahtarlar, webhook ve proje bağı o tek adımda hazırlanır ve mağazanın kendi tarafında şifreli tutulur.
Arşivi boş tutmak bir ayrıntı değil, meselenin kendisi. Anahtarları önceden yazılmış, satıcı başına üretilen bir paket, bir dosyanın içindeki canlı bir kimlik bilgisidir — ve dosya yolculuk eder: İndirilenler klasörüne, gecelik yedeğe, bir destek kaydının ekine ve sitenin temasını taşıyan depoya.
Bu, ajansla çalışan bir mağazada özellikle sık oluyor. «Eklentiyi bana da atar mısın» cümlesi masum bir dosya paylaşımıdır; paketin içinde bir anahtar varsa aynı cümle, hesabın devri anlamına gelir.
Eklenti kurmak WooCommerce rehberinin ve yanındaki yedi sayfanın işi; hangisinin seçileceği de eklenti sayfasının. Buradaki konu ikisinin altında: bir eklenti arşivi ne tutabilir, Paymos arşivi ne tutuyor ve size verilen dosya nasıl kontrol edilir.
Ödeme eklentisi paketinin içinde ne var?
Ödeme eklentisi paketi bir kod arşividir — CMS'in kurduğu uzantı ve onu mağazaya tanıtan dosyalar. İçindekiler, indiren herkes için aynıdır ve hiçbiri indiren satıcıya özel değildir.
Arşivi açmaya değer kılan şey, çalışan bir entegrasyonun eninde sonunda ihtiyaç duyduklarıdır: bir API anahtarı, bir API gizli anahtarı, bir proje bağı ve bir webhook anahtarı. Sağlayıcının burada bir seçimi var: bunlar ne zaman var olacak — derleme anında dosyaya yazılarak mı, yoksa bağlanma anında sonradan hazırlanarak mı?
Paymos bu seçimi bağlanma anından yana yapıyor. İndirme yolu, hesap başına paket üretmek yerine sabit bir dosya sunar; arşivin her satıcı için aynı olmasının ve sayılan kimlik bilgisi türlerinden hiçbirini taşımamasının nedeni budur.
İki seçenek arasındaki fark, arşivin ne olduğunda. Derleme anında yazılan bir anahtar dosyayı bir sırra dönüştürür; bağlanma anında hazırlanan bir anahtar ise dosyayı kod olarak bırakır ve sırrı mağazanın kendi tarafında oluşturur.
Bir sağlayıcı neden indirmeye kimlik bilgisi koyar?
Sağlayıcı, kurulum işini satıcının üstünden almak için indirmeye kimlik bilgisi yazar. Varsayım şu: ikisi birbirine bağlıdır — hiçbir şey ayarlamayan bir mağazaya, kime ait olduğunu zaten bilen bir şey verilmiş olmalıdır.
Bu kısayolun bedelini arşiv ödüyor. Bir anahtarı eklenti arşivine yazmak onu koddan çıkarıp hamiline yazılı bir kimlik bilgisine çevirir: dosyayı elinde tutan, uğruna üretildiği hesabı elinde tutar ve bir dosyayı elinde tutmak çok düşük bir eşiktir.
İçine anahtar yazılmış bir arşiv ayrıca iki olayı birleştirir. Kodu almak hesap gerektirmez ve herkes tarafından tekrarlanabilir; bir mağazayı bağlamak ise kimlik doğrulamalıdır ve bir kez olur. Anahtarlı arşiv bu ikisini tek bir olaya indirir.
MITRE bu genel biçimi CWE-798, Use of Hard-coded Credentials olarak kataloglar — «ürün, bir parola ya da kriptografik anahtar gibi gömülü kimlik bilgileri içerir». Klasik örneği her kuruluma dağıtılan tek bir gizli anahtardır; satıcı başına üretim bunu tersine çevirip her dosyaya kendi anahtarını verir ve önemli olan kısmı korur: dağıtılabilir bir dosyanın içinde duran canlı bir gizli anahtar.
Eklenti arşivi indirildikten sonra nereye gidiyor?
Eklenti arşivi indiği yerde kalmaz. İndirilenler klasörü birkaç duraktan yalnızca ilkidir ve sonrakilerin hiçbiri bir kimlik bilgisi düşünülerek seçilmemiştir:
- Dizüstü bilgisayardaki İndirilenler klasörü — şifresiz ve kimse silmediği sürece orada.
- Gecelik site yedeği ve o yedeğin ürettiği her geri dönüş noktası.
- Bir destek kaydının eki; satıcı «eklentiyi» yardım eden kişiye gönderdiği an.
- Sürüm kontrolündeki site deposu, temanın yanında.
- Bir taşeronun bilgisayarı; çünkü dosyayı iletmek işi devretmenin en hızlı yolu.
Kimlik bilgisi taşımayan bir arşiv için beşi de olay değildir: dosya herkese açık baytlar taşır ve hiçbir şey ifşa etmez. İçine anahtar yazılmış bir arşiv içinse beşi de birer ifşadır ve satıcının kaçının gerçekleştiğine dair bir kaydı yoktur.
Bu listenin asıl özelliği geri alınamaz olması. Bir yedeği silmek, ondan üretilmiş kopyaları geri getirmez; bir destek ekini kaldırmak da o eki kimin indirdiğini geri almaz. Kimlik bilgisi hiç orada olmadığında bu soruların hiçbiri sorulmaz.
Size gönderilen paketi nasıl kontrol edersiniz?
Bir eklenti arşivini, siteye ulaşmadan önce açıp arayarak kontrol edersiniz. Üç komut soruyu kapatır ve hiçbiri sağlayıcının iş birliğini gerektirmez.
# 1. arşivi mağazaya ulaşmadan aç
unzip -q plugin.zip -d pkg
# 2. canlı bir kimlik bilgisine benzeyen her şeyi ara
grep -rIn -iE 'api[_-]?key|secret|token|client_id|device_code' pkg
# 3. özetini al, sonra aynı sürümün ikinci bir indirmesiyle karşılaştır
shasum -a 256 plugin.zip
İkinci adımdaki -i bayrağı gerçekten iş görüyor: bir sabit api_key kadar API_KEY ya da ApiKey biçiminde de yazılmış olabilir ve büyük-küçük harfe duyarlı bir arama ikisinin de yanından geçer. Herkese açık Paymos WooCommerce kaynağında bu kalıp -i ile 69, onsuz 67 satır döndürüyor.
Bu eşleşmeleri bulgu değil, alan adı ve etiket olarak okuyun. Aynı kaynak ağacında otuz sekiz tanesi tests/ altında duruyor; oradaki 'api_key' => 'pk_test_1234567890' gibi kurgular tasarım gereği yer tutucudur — durulması gereken şey, test klasörünün dışında gerçek bir değer taşıyan bir eşleşmedir.
Aramanın yalnızca ima ettiğini sağlama toplamı kesinleştirir. Aynı sürümü başka bir makineden ikinci kez indirin ve o kopyanın da özetini alın: her satıcı için aynı olan bir arşiv aynı özeti iki kez üretir, satıcı başına üretilen bir paket üretemez.
Arşiv boşsa eklenti anahtarlarını nereden alıyor?
Eklenti anahtarlarını tek bir yetkilendirmeden alır. Sürümü kurun, mağaza yönetiminde Connect Paymos düğmesine basın, açılan Paymos sekmesinde isteği onaylayın — gerisini bağlama adımı hazırlar:
- Anahtarlar. Satıcının etkin Ödeme anahtarı yeniden kullanılır, yoksa bir tane oluşturulur; Sandbox ve Live birlikte gelir, dolayısıyla eklentiyi sonradan Live'a almak yeniden bağlanmayı gerektirmez.
- Webhook. Fatura webhook'unu platform kaydeder; yalnızca geri çağrı adresi, kategori ve proje birebir aynıysa mevcut biri yeniden kullanılır ve aynı adresteki çakışan bir webhook sessizce ezilmez.
- Proje. Eklentide hiç seçilmez — Panelde açık olan proje bağlanır ve akışın hiçbir yerinde ikinci bir proje seçici yoktur.
Kısayol savı böylece kendi kendini yanıtlıyor. Satıcı başına üretim, kurulumu kısaltmayı bir dosyaya gizli anahtar koyarak satın alır; bu yolla bağlanan bir mağaza da hiçbir şey ayarlamamıştır ve kurduğu dosyanın içi hâlâ boştur.
Tek arşiv neden her satıcıya yetiyor?
Tek arşiv her satıcıya yetiyor, çünkü eklenti koddur ve kodun içinde bir hesap yoktur. CMS ekosistemleri tam olarak bunu varsayar ve dağıtım kuralları da bunun etrafına yazılmıştır.
WordPress bu varsayımı bir dizin kuralı olarak yazıya döküyor: «WordPress.org'un dağıttığı tek eklenti sürümü, dizindeki sürümdür». Sürüm başına tek dosya ve herkese aynısı, bir CMS'in bir eklentiden beklediği biçimdir — hangi kanal teslim ederse etsin.
Satıcı başına üretim böyle bir kanala sığmaz. Bu tür bir dosya yayımlanmış bir sürüm olarak duyurulamaz, herkese açık biriyle karşılaştırılamaz ve sürümler arasında farkı alınamaz; çünkü karşısına konacak tek bir yayımlanmış sürüm yoktur.
Paymos sekiz resmi eklentisini herkese açık sürüm indirmeleri olarak dağıtır: platform başına, sürüm başına tek paket. Her sürüm WooCommerce ve WHMCS, OpenCart ve PrestaShop, Magento 2 ve Shopware 6, CS-Cart ve Easy Digital Downloads için birer arşiv üretir.
Kimlik bilgisi taşımayan paket neyi mümkün kılıyor?
İçinde kimlik bilgisi olmayan bir paket, üç sıradan işlemin ifşaya dönüşmesini engeller: dosyayı paylaşmak, bir anahtarı yenilemek ve eklentiyi değiştirmek. Üçü de normal bir haftada yaşanır.
Dosyayı bir geliştiriciye, bir ajansa ya da bir iş arkadaşına vermek hiçbir şey ifşa etmez; çünkü Paymos arşivi zaten herkeste olan dosyadır. Hareket eden nesne, erişim veren nesne değildir.
Bir kimlik bilgisini yenilemek yeniden indirme gerektirmez. Anahtar ile arşiv ayrı nesnelerdir; yenilemeden sonra bütün prosedür mağazayı yeniden bağlamaktır ve webhook anahtarı yenilemesi, hem güncel hem önceki anahtarla üretilmiş imzaları kabul eden bir geçiş süresi taşır.
OWASP yenilemeyi aynı yere koyuyor: «Gizli anahtarları düzenli olarak yenilemelisiniz ki çalınan kimlik bilgileri yalnızca kısa bir süre işe yarasın». Önce eklentinin yeniden indirilmesini gerektiren bir yenileme, ertelenen bir yenilemedir.
Boş arşiv neyi kanıtlamıyor?
Kimlik bilgisi taşımayan bir arşiv tek bir şeyi kanıtlar: dosya bir gizli anahtar taşımıyordu. Geriye iki soru bırakır ve ikisi de yanıtladığından daha önemlidir.
Birincisi saklama. Bir kimlik bilgisi mağazaya ulaştığında oradaki bir şeyin onu tutması gerekir ve nasıl tuttuğu, ayrı yanıtı olan ayrı bir özelliktir — Paymos eklentileri bu değerleri mağazanın kendi tarafında şifreli tutar, tarayıcıya hiç geri döndürmez ve elle değiştirilmelerine izin vermez.
İkincisi çalışma zamanı. Arşiv, kodun bir anlık görüntüsüdür; dolayısıyla bir eklentinin arşivini okumak size o eklentinin ne yapabileceğini söyler, gerçek faturaların aktığı canlı bir mağazada ne yaptığını değil.
Saklama da çalışma zamanı da yanıt hak ediyor ve bir sağlama toplamı ikisini de çözmüyor. Arşiv kontrolü ucuz olanıdır: hiçbir şey kurulmadan önce, birkaç dakikalık işle bütün bir ifşa sınıfını ortadan kaldırır.
Kimlik bilgisinin kendisi ne kadar dar olmalı?
Bir CMS'e ulaşan kimlik bilgisi, işi gören en dar olan olmalıdır; çünkü mağaza, eklenti klasörünü yönetici erişimi olan herkesin okuyabildiği paylaşılan bir makinedir. Paymos modeli bunu soru sorulmadan önce daraltıyor.
Bağlama adımı bir Ödeme kimlik bilgisi hazırlar ve Ödeme ile Ödeme Çıkışı kimlikleri ayrıdır; yani bir ödeme eklentisi parayı dışarı taşıyan anahtarı hiç tutmaz. Sandbox ile Production da aynı API sözleşmesi üzerinde ayrı kimliklerle çalışır, dolayısıyla mağazanın test ettiği anahtar gerçek ödemeleri alan anahtar değildir.
Bir Paymos kimlik bilgisi 50 girişe kadar bir IP listesi taşıyabilir; bu da onu mağazanın çalıştığı adreslere sabitler. Başka bir yerden sunulan bir kopya reddedilir, yani bir yedekten çıkarılan anahtar çalışan bir anahtar değildir.
Merchant API kimlik doğrulaması, hamiline yazılı bir belirteç yerine HMAC-SHA256 istek imzalamadır; yani gizli anahtar bir isteğin içinde yolculuk etmez, isteği imzalar. API anahtarları kimlik bilgisi modelinin tamamını anlatıyor.
Eklenti kurmadan önce ne sorulmalı?
Dört soru, bir ödeme eklentisinin kimlik bilgilerini nasıl ele aldığını kapatır ve dördü de dosya siteye ulaşmadan yanıtlanabilir.
- Arşiv herkes için aynı mı? Kendi indirmenizin özetini alın, aynı sürümü başka bir makineden çekin ve karşılaştırın.
- Arşiv canlı bir değer tutuyor mu? Açılmış dosyalarda kimlik bilgisine benzeyen dizeleri arayın; alan adları ve kurgular bulgu değildir.
- Eklenti kurulumdan sonra kimlik bilgisini nereye koyuyor? Bu, bir destek yanıtında değil dokümantasyonda durmalı.
- Tuttuğu kimlik bilgisi ne kadar dar? Ödeme çıkışı yetkisi taşıyan bir ödeme eklentisi, işin gerektirdiğinden fazlasını tutuyor demektir.
Dördünün hiçbiri bir güvenlik denetimi değil; birlikte ise kurtarma adımı olmayan hatayı eliyorlar: kimsenin listesini tutmadığı bir yere çoktan kopyalanmış bir gizli anahtar.
Eklenti, mağazadan bir ödeme hattına giden yollardan yalnızca biri; bir web sitesinde kripto ödeme almanın diğer yolları gerisini anlatıyor. Mağaza hangi yolu seçerse seçsin, kimlik bilgisi orada başlamalı — çoktan yolculuk etmiş bir dosyada değil.
| Kimlik bilgisi | İndirmenin içinde yazılı mı | Bunun yerine nereden geliyor | |
|---|---|---|---|
| API anahtarı | Hayır | Bağlama adımında, Sandbox ve Live birlikte | |
| API gizli anahtarı | Hayır | Bağlama adımında, mağaza tarafında şifreli saklanır | |
| Proje kimliği | Hayır | Panelde açık olan projeden bağlanır | |
| Webhook anahtarı | Hayır | Platformun kaydettiği webhook ile birlikte oluşur | |
| OAuth belirteci ya da cihaz kodu | Hayır | Kısa ömürlüdür, bağlama sırasında harcanır ve atılır |
Sık sorulan sorular
Paymos eklenti indirmesi API anahtarımı içeriyor mu?
İçermiyor. Arşivde API anahtarı, API gizli anahtarı, proje kimliği, webhook anahtarı, OAuth belirteci ya da cihaz kodu bulunmaz. Bunlar mağaza bağlandıktan sonra, tek bir yetkilendirmeyle hazırlanır.
Eklentiyi kurduktan sonra neyi ayarlamam gerekiyor?
Hiçbir şeyi. Bağlama, mağaza yönetiminde tek bir buton ve Paymos sekmesinde bir onaydan ibarettir; anahtarlar, webhook ve proje bağı o adımda hazırlanır.
Eklenti dosyası her satıcı için farklı mı?
Değil. İndirilen paket her satıcı için aynıdır; aynı sürümün iki indirmesi aynı baytları taşır ve aynı sağlama toplamını üretir.
Paymos eklentisi kurulumdan sonra kimlik bilgilerini nerede tutuyor?
Mağazanın kendi tarafında, şifreli olarak ve tarayıcıya hiç geri döndürmeden. Kimlik bilgisi dağıtılan arşivin içinde değil mağazada yaşar; arşivi değiştirmek bu yüzden hiçbir gizli anahtarı taşımaz.
Bir eklenti paketinde kimlik bilgisi olup olmadığını nasıl kontrol ederim?
Arşivi açıp içinde kimlik bilgisine benzeyen dizeleri arayın, sonra dosyanın özetini alıp aynı sürümün ikinci bir indirmesiyle karşılaştırın. Sonuçlarda alan adları beklenir, değerler beklenmez; test klasöründeki bir eşleşme ise bir kurgudur.
Eklentiyi indirmek mağazamı Paymos'a bağlar mı?
Bağlamaz. İndirmek yalnızca kodu taşır. Mağaza ayrı bir adımda, mağaza yönetiminden verilen tek bir yetkiyle bağlanır.
Eklentinin elinde hangi kimlik bilgisi kalıyor?
Bir Ödeme kimlik bilgisi; bağlama sırasında satıcının etkin Ödeme anahtarından ya da yeni oluşturulan birinden hazırlanır. Ödeme ve Ödeme Çıkışı kimlikleri ayrıdır, yani eklenti parayı dışarı taşıyan anahtarı hiç tutmaz.
bir arşiv incelemesi ne zaman KULLANILMAMALI
- Sorunuz mağazanın anahtarı kurulumdan sonra nasıl sakladığıysa, arşivi incelemek hiçbir şey yanıtlamaz. Kimlik bilgisi taşımayan bir dosya saklama hakkında bir şey söylemez; eklentinin saklama dokümanını okuyun.
- Entegrasyon paketlenmiş bir eklenti değil de REST API'ye karşı yazdığınız kendi kodunuzsa, incelenecek bir arşiv yok. Bunun yerine dağıtım yolunu denetleyin: ortam değişkenleri, CI değişkenleri, yapılandırma dosyaları.
- Sunucunun kendisinin bile geri okuyamayacağı bir kimlik bilgisi gerekiyorsa, kendi barındırmanızdaki bir eklenti onu aramak için yanlış yer. Bir mağaza bir API'ye ne sunabiliyorsa onu tutabilir de; işe yarayan kontroller anahtarın etrafındakilerdir, örneğin bir IP listesi.
- Sağlayıcı hiç indirme sunmuyor ve uzantıyı kendi paneli üzerinden kuruyorsa, sağlama toplamı testinin karşılaştıracağı bir şey yok. Kimlik bilgisinin nereye yazıldığını ve orayı başka kimin okuyabildiğini sorun.
Kaynaklar
- 1. CWE-798: Use of Hard-coded Credentials (accessed 2026-08-16)
- 2. OWASP Secrets Management Cheat Sheet (accessed 2026-08-16)
- 3. WordPress Plugin Directory guidelines (accessed 2026-08-16)
- 4. Paymos dokümantasyonu — WooCommerce eklentisi (accessed 2026-08-16)
Son gözden geçirme: 16 Ağu 2026


