Modify Response Content
Modify Response Content Aksiyonu Nedir?
Modify Response Content aksiyonu, Kurum Servislerinden dönen HTTP yanıtlarının içeriğini gerçek zamanlı olarak değiştirmeye olanak tanır. Bu aksiyon ile hassas veriler maskelenebilir, HTML içeriğine kod eklenebilir veya belirli metinler başka metinlerle değiştirilebilir.
Bu aksiyon yalnızca yanıt (response) aşamasında çalışır ve yanıt gövdesindeki (body) içeriği işler.
Modify Response Content Aksiyonunun Önemi
Yanıt içeriğini değiştirme yeteneği, güvenlik, uyumluluk ve işlevsellik açısından kritik senaryolarda kullanılır. Bu aksiyon sayesinde Kurum Servisinde manuel bir değişiklik yapmadan yanıt içeriği manipüle edilebilir.
Modify Response Content aksiyonu;
- KVKK/GDPR Uyumluluğu: Yanıtlardaki TC kimlik numarası, kredi kartı gibi hassas verileri maskeler,
- Güvenlik: Hassas bilgilerin istemciye ulaşmasını engeller,
- HTTP→HTTPS Dönüşümü: HTML içindeki linkleri otomatik olarak HTTPS'e çevirir,
- Analytics Entegrasyonu: Sayfalara JavaScript tracking kodları ekler,
- A/B Testing: Sayfa içeriklerini dinamik olarak değiştirir,
- Legacy Uygulama Desteği: Eski uygulamaların çıktılarını modernize eder.
Bu nedenle Modify Response Content aksiyonu, uygulama katmanında içerik manipülasyonu için güçlü bir araçtır.
Desteklenen Değişiklik Türleri
Bu aksiyon üç farklı değişiklik modu sunar:
| Tür | Açıklama | Kullanım Alanı |
|---|---|---|
| Mask | Eşleşen metinleri maskeler (uzunluk değişmez) | TC kimlik, kredi kartı, telefon numarası gizleme |
| Add HTML Code | HTML etiketlerine kod ekler | Script enjeksiyonu, analytics, meta tag ekleme |
| Replace | Eşleşen metinleri başka metinlerle değiştirir | URL düzeltme, metin değiştirme, içerik güncelleme |
TIP
- Mask: Orijinal metnin uzunluğunu korur (ör:
12345678901→1*********1). Veri formatını bozmadan gizleme yapar. - Replace: Metnin uzunluğu değişebilir (ör:
http://→https://). Tam değiştirme yapar.
Kullanılabildiği vService Tipleri
Çalışma Anı
Nasıl Eklenir?
Yeni bir Modify Response Content Aksiyonu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:
- Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
- Load Balancer → Actions → Add adımları takip edilir.
- Aksiyon için benzersiz ve açıklayıcı bir isim girilir.
- Action Type olarak Modify Response Content seçilir.
- Aksiyona ait ilgili konfigürasyonlar yapılandırılır.
- Conditions sekmesinden aksiyonun hangi koşul/koşullarda devreye gireceği belirlenir.
Addbutonuna tıklanarak aksiyon eklenir.
Mask Modu Ekleme Formu
Mask Modu için Aksiyon Ekleme Formu
INFO
Modify Type
Değişiklik türü olarak Mask seçilir. Bu mod, eşleşen metinleri belirtilen karakterle maskeler ve orijinal uzunluğu korur.
INFO
Query Type Varsayılan: RegEx
Arama sorgusu türünü belirler:
- String: Düz metin araması yapar. Girilen metin, yanıt içinde geçtiği her yerde eşleşir; tam eşleşme koşulu aranmaz ve arama harf duyarlıdır.
- Regex: Düzenli ifade (regex) ile arama yapar. Desen eşleştirme için kullanılır.
TIP
TC kimlik numarası, kredi kartı gibi yapısal verilerin maskelenmesi için Regex kullanılır.
INFO
Built-in Mask Regexes
Sık kullanılan maskeleme desenleri için hazır regex'ler kullanılabilir. Tıklandığında ilgili regex otomatik olarak Mask query alanına eklenir:
- TC ID. NO: Türkiye Cumhuriyeti kimlik numarası deseni (
\b\d{11}\b) - Credit card: Kredi kartı numarası deseni
TC Kimlik Numarası Regex Deseni
Kredi Kartı Regex Deseni
INFO
Mask Query
Maskelenecek içeriği bulmak için kullanılacak arama sorgusu seçilir.
- String modu için: tam olarak aranacak metin
- Regex modu için: düzenli ifade deseni
Regex test özelliği: Sağdaki buton ile regex deseni test edilir. Test panelinde örnek girdiler eklenerek desenin doğru çalışıp çalışmadığı kontrol edilir.
TC Kimlik Regex Testi: 11 Haneli Sayılar Eşleşir
Kredi Kartı Regex Testi: Farklı Formatlar
INFO
Case Sensitive Varsayılan: Kapalı
Yalnızca RegEx modunda görünür ve aramanın büyük/küçük harf ayrımı yapıp yapmayacağını belirler.
- İşaretli değilken (varsayılan): Arama harf duyarsızdır;
TCKNvetcknaynı kabul edilir. - İşaretliyken: Arama harf duyarlı yapılır.
WARNING
String aramalarında bu alan görünmez ve arama her zaman harf duyarlıdır. Ayrıca alanın yanındaki regex test panelinde denetim her zaman harf duyarlı yapılır; canlı davranış bu alanın durumuna göre farklılaşabilir.
INFO
Omitted Characters
Maskeleme sırasında korunacak (maskelenmeyecek) karakterler belirlenebilir. Bu karakterler orijinal halleriyle kalır.
TIP
- Omitted characters:
1978 - Girdi:
12345678901 - Çıktı:
1*****789*1(1, 7, 8, 9 karakterleri korunur)
Bu özellik, doğum yılı gibi belirli bilgilerin görünür kalması gereken durumlarda kullanılabilir.
INFO
Masking Character Zorunlu Varsayılan: *
Maskeleme için kullanılacak karakter bu alana girilir. Alan tek bir karakter kabul eder.
TIP
*: Standart maskelemeX: Daha belirgin maskeleme#: Sayısal veri maskeleme için
INFO
Masking Tolerance
Eşleşen metnin başından ve sonundan kaç karakterin maskelenmeyeceğini belirler.
TIP
- Tolerance:
2 - Girdi:
12345678901 - Çıktı:
12*******01(ilk 2 ve son 2 karakter korunur)
Bu özellik, verinin doğrulanabilirliğini korurken gizleme yapmak için kullanılır.
WARNING
Tolerans yalnızca eşleşme yeterince uzunsa uygulanır: eşleşmenin uzunluğu, tolerans değerinin iki katından fazla olmalıdır. Aksi hâlde tolerans dikkate alınmaz ve eşleşmenin tamamı maskelenir.
11 haneli bir değerde tolerans 5'e kadar çalışır (12345*12345). Tolerans 6 yapıldığında görünür kalması istenen kısım eşleşmenin tamamını kaplayacağı için sonuç *********** olur. Form bu durumda uyarı vermez.
INFO
Min. Occurrences for Masking
Maskelemenin kaçıncı eşleşmeden itibaren başlayacağı belirlenir. Yanıt gövdesindeki eşleşmeler sırayla sayılır; bu sıradan önceki eşleşmeler maskelenmeden istemciye gider.
TIP
- Min. occurrences:
2 - İçerik: "TC: 12345678901, Tel: 05551234567"
- Sonuç:
TC: 12345678901, Tel: 0*********7: ilk eşleşme olduğu gibi kalır, maskeleme ikinci eşleşmeden itibaren başlar.
İçerikte tek eşleşme olsaydı hiçbir şey maskelenmezdi.
WARNING
Varsayılan değer 1'dir; yani "birinci eşleşmeden itibaren maskele": bütün eşleşmeler maskelenir. Bu alan, adı çağrıştırdığı gibi "maskeleme için en az şu kadar eşleşme bulunsun" anlamına gelmez. Amaç bütün hassas verilerin örtülmesiyse alan 1'de bırakılmalıdır; artırılması, her yanıttaki ilk verinin açıkta kalması demektir.
INFO
Conditions
Bu alanda, ilgili aksiyonun hangi koşul veya koşullar sağlandığında devreye gireceği tanımlanır.
Bir veya birden fazla koşul eklenerek, and/or yapısı ile davranışın hedefli ve kontrollü şekilde uygulanması sağlanabilir.
Koşullar hakkında detaylı bilgi Conditions sayfasında yer alır.
WARNING
Bu alanda herhangi bir koşul tanımlanmazsa, ilgili aksiyon koşulsuz (Always) olarak çalışır. Bu durumda aksiyon, ilgili vService'e gelen tüm trafiğe uygulanır.
Canlı ortamlarda, koşul tanımlanmadan aksiyon kullanılması beklenmeyen durumlara (servis kesintilerine) yol açabilir. Bu nedenle aksiyon oluşturulurken mutlaka en az bir koşul tanımlanması önerilir.
INFO
Form Butonları
Add
Add butonuna tıklanarak aksiyon ekleme işlemi tamamlanır.
Add & Repeat
Add & Repeat butonu ile aksiyon ekleme işlemi tamamlanır ve farklı konfigürasyonlarla ilgili pencereden çıkılmadan yeni bir aksiyon daha eklenebilir.
Aksiyon Eklendi
Add HTML Code Modu Ekleme Formu
Add HTML Code Modu için Aksiyon Ekleme Formu
INFO
Modify Type
Değişiklik türü olarak Add HTML code seçilir. Bu mod, belirtilen HTML etiketinin içine kod enjekte eder.
INFO
HTML Tag
Kodun ekleneceği HTML etiketi seçilir.
| Etiket | Açıklama |
|---|---|
<html></html> | Ana HTML etiketi |
<head></head> | Sayfa başlık bölümü (meta, script, style için ideal) |
<body></body> | Sayfa gövdesi (görünür içerik için) |
<title></title> | Sayfa başlığı |
INFO
Tag Modify Type
Kodun etiket içinde nereye ekleneceğini belirler:
- Append: Etiketin açılışından hemen sonra ekler (
<html>→<html>[KOD]...) - Prepend: Etiketin kapanışından hemen önce ekler (
...</html>→...[KOD]</html>)
TIP
- Script'ler için:
<head>+ Append veya<body>+ Prepend - Meta tag'ler için:
<head>+ Append
INFO
HTML Content to Add
Eklenecek HTML/JavaScript içeriği bu alana girilir. Herhangi bir geçerli HTML kodu girilebilir.
Varsayılan değer: HTTP→HTTPS link dönüştürme scripti
<script type="text/javascript" defer="defer">
window.addEventListener("load", function() {
var alinks = document.getElementsByTagName("a");
var acount = alinks.length;
for (var i=0; i < acount; i++) {
alinks[i].href = alinks[i].href.replace("http://","https://");
}
})
</script>WARNING
Eklenen kod, sayfa yüklenme süresini ve performansını etkileyebilir; küçültülmüş ve iyileştirilmiş kod kullanılır.
INFO
Conditions
Bu alanda, ilgili aksiyonun hangi koşul veya koşullar sağlandığında devreye gireceği tanımlanır.
Bir veya birden fazla koşul eklenerek, and/or yapısı ile davranışın hedefli ve kontrollü şekilde uygulanması sağlanabilir.
Koşullar hakkında detaylı bilgi Conditions sayfasında yer alır.
WARNING
Bu alanda herhangi bir koşul tanımlanmazsa, ilgili aksiyon koşulsuz (Always) olarak çalışır. Bu durumda aksiyon, ilgili vService'e gelen tüm trafiğe uygulanır.
Canlı ortamlarda, koşul tanımlanmadan aksiyon kullanılması beklenmeyen durumlara (servis kesintilerine) yol açabilir. Bu nedenle aksiyon oluşturulurken mutlaka en az bir koşul tanımlanması önerilir.
INFO
Form Butonları
Add
Add butonuna tıklanarak aksiyon ekleme işlemi tamamlanır.
Add & Repeat
Add & Repeat butonu ile aksiyon ekleme işlemi tamamlanır ve farklı konfigürasyonlarla ilgili pencereden çıkılmadan yeni bir aksiyon daha eklenebilir.
Aksiyon Eklendi
Replace Modu Ekleme Formu
Replace Modu için Aksiyon Ekleme Formu
INFO
Modify Type
Değişiklik türü olarak Replace seçilir. Bu mod, eşleşen metinleri yeni içerikle değiştirir.
INFO
Query Type Varsayılan: RegEx
Arama sorgusu türünü belirler:
- String: Düz metin araması
- Regex: Düzenli ifade ile arama
INFO
Case Sensitive Varsayılan: Kapalı
Yalnızca RegEx modunda görünür. İşaretli değilken arama harf duyarsız, işaretliyken harf duyarlı yapılır. String aramaları her zaman harf duyarlıdır.
INFO
New Content Zorunlu
Eşleşen metnin yerine konulacak yeni içerik bilgisi girilir.
| Mask Query | New Content | Sonuç |
|---|---|---|
http:// | https:// | Tüm HTTP linkleri HTTPS'e çevrilir |
example.com | newsite.com | Domain değişikliği |
<div class="old"> | <div class="new"> | CSS class değişikliği |
WARNING
Yeni içerik düz metin olarak yazılır. RegEx modunda kullanılan yakalama gruplarına \1, \2 gibi geri referanslarla atıfta bulunulamaz; bu ifadeler yazıldığı gibi çıktıya geçer. Eşleşmenin bir bölümünün korunması gerekiyorsa desen buna göre daraltılmalıdır.
INFO
Conditions
Bu alanda, ilgili aksiyonun hangi koşul veya koşullar sağlandığında devreye gireceği tanımlanır.
Bir veya birden fazla koşul eklenerek, and/or yapısı ile davranışın hedefli ve kontrollü şekilde uygulanması sağlanabilir.
Koşullar hakkında detaylı bilgi Conditions sayfasında yer alır.
WARNING
Bu alanda herhangi bir koşul tanımlanmazsa, ilgili aksiyon koşulsuz (Always) olarak çalışır. Bu durumda aksiyon, ilgili vService'e gelen tüm trafiğe uygulanır.
Canlı ortamlarda, koşul tanımlanmadan aksiyon kullanılması beklenmeyen durumlara (servis kesintilerine) yol açabilir. Bu nedenle aksiyon oluşturulurken mutlaka en az bir koşul tanımlanması önerilir.
INFO
Form Butonları
Add
Add butonuna tıklanarak aksiyon ekleme işlemi tamamlanır.
Add & Repeat
Add & Repeat butonu ile aksiyon ekleme işlemi tamamlanır ve farklı konfigürasyonlarla ilgili pencereden çıkılmadan yeni bir aksiyon daha eklenebilir.
Aksiyon Eklendi
Bu aksiyon vService genelinde sıkıştırmayı devre dışı bırakır
İçeriğin okunabilmesi için TR7, Kurum Servisinden sıkıştırılmamış yanıt ister. Bu istek koşuldan bağımsız olarak vService'ten geçen tüm trafiğe uygulanır; yalnızca koşulu sağlayan isteklere değil.
Sonuçları:
- Kurum Servisi yanıtları gzip/brotli ile sıkıştırılmaz → bant genişliği kullanımı ve yanıt süresi artar.
- vService'te tanımlı bir sıkıştırma profili varsa etkisiz kalır.
- Yanıtlar sabit uzunluk yerine parçalı (chunked) olarak iletilir.
Bu nedenle aksiyon, yalnızca gerçekten içerik değişikliği gereken vService'lerde tanımlanmalıdır.
İşleme Sınırları
- İçerik tipi denetimi yapılmaz; JSON, XML, JavaScript ve ikili (binary) yanıtlar da işlenir. İkili içerikte eşleşen bayt dizileri değiştirilerek dosya bozulabilir; aksiyon mutlaka içerik tipini sınırlayan bir koşulla kullanılmalıdır.
- Yanıt gövdesi parça parça taranır. Parça sınırına denk gelen çok uzun eşleşmeler kaçırılabilir; Min. occurrences for masking değeri 1'den büyük seçildiğinde büyük yanıtlarda her parçanın ilk eşleşmesi maskelenmeden kalabilir.
- Aynı vService'e birden fazla içerik değişikliği aksiyonu eklenebilir; bu durumda aksiyonlar sırayla zincirlenir ve birinin çıktısı diğerinin girdisi olur.
- Geçersiz bir düzenli ifade girilirse aksiyon sessizce hiçbir şey yapmaz; uyarı üretilmez.
Operasyonel ve Güvenli Kullanım Önerileri
- KVKK/GDPR Uyumluluğu İçin Maskeleme Kullanın. TC kimlik numarası, kredi kartı, telefon numarası gibi kişisel verileri Kurum Servisinden gelmeden önce maskeleyerek yasal uyumluluğu sağlayın.
- Regex Desenlerini Test Edin. Maskeleme veya değiştirme işleminden önce regex deseninizi test panelinde doğrulayın. Yanlış desen, içeriğin bozulmasına neden olabilir.
- Performans Etkisini Göz Önünde Bulundurun. İçerik değişikliği işlemi, yanıtın tamamının işlenmesini gerektirir ve büyük yanıtlarda gecikmeye neden olur; koşulları kullanarak yalnızca gerekli sayfalarda etkinleştirin.
- HTML Enjeksiyonunda defer Kullanın. Script eklerken
defer="defer"özniteliğini kullanarak sayfa yüklenme performansını koruyun. - Tolerance ile Doğrulama İmkanı Bırakın. Maskelemede tolerance değeri kullanarak verinin bir kısmının görünür kalmasını sağlayın. Bu, müşteri hizmetleri gibi senaryolarda doğrulama için gereklidir.
- Koşullarla Hedefli Uygulama Yapın. İçerik değişikliğini tüm yanıtlarda değil, yalnızca belirli URL'lerde ya da içerik tiplerinde uygulayarak gereksiz işlem yükünden kaçının.
- Content-Type Kontrolü Yapın. Bu aksiyon en iyi
text/htmliçerik tipinde çalışır. JSON, XML veya binary içeriklerde beklenmedik sonuçlar oluşabilir.
Canlı Ortamlarda Yaygın Kullanım Senaryoları
Aşağıdaki örnekler, ilgili aksiyonun gerçek sistemlerde en sık karşılaşılan kullanım senaryolarında nasıl uygulandığını göstermektedir. Bu senaryolar, canlı ortamlarda yaygın olarak tercih edilen ve sahada edinilmiş deneyimlere dayanan pratikleri temel alır.
Senaryo 1: Mask Modu: KVKK Uyumluluğu için TC Kimlik Numarası Maskeleme
Problem: E-devlet entegrasyonu kullanan bir web uygulaması, kullanıcı bilgilerini HTML sayfasında gösteriyor. TC kimlik numaraları tam olarak görünüyor ve bu KVKK ihlali oluşturuyor. Kurum Servisinde değişiklik yapmak uzun sürecek, acil çözüm gerekiyor.
Çözüm: Mask modu kullanılarak yanıtlardaki TC kimlik numaraları otomatik maskelenir ve kişisel veri sızıntısı önlenir.
Konfigürasyon:
- Modify Type: Mask
- Query Type: RegEx
- Built-in Mask Regexes: TC ID. NO (tıklanarak otomatik eklenir)
- Mask Query:
\b\d{11}\b - Case Sensitive: (işaretlenmez: arama harf duyarsız yapılır)
- Omitted Characters: (boş bırakılır)
- Masking Character:
* - Masking Tolerance:
1 - Min. Occurrences for Masking:
1 - Conditions: Path
/user/profileile başlar
Sonuç:
- ✅ KVKK uyumluluğu → TC kimlik numaraları maskelenir, yasal sorun ortadan kalkar.
- ✅ Doğrulama imkanı → İlk ve son hane görünür (
1*********1), doğrulama yapılabilir. - ✅ Kurum Servisi değişikliği yok → Kurum Servisi kodunda hiçbir değişiklik gerekmez.
- ✅ Otomatik maskeleme → 11 haneli tüm sayılar otomatik algılanır ve maskelenir.
- ✅ Path koşulu → Sadece kullanıcı profil sayfalarında aktif olur, gereksiz işlem yükü olmaz.
Örnek dönüşüm:
- Girdi:
TC Kimlik No: 12345678901, Adı: Ahmet Yılmaz - Çıktı:
TC Kimlik No: 1*********1, Adı: Ahmet Yılmaz
Senaryo 2: Add HTML Code Modu: Tüm Sayfalara Google Analytics Tracking Kodu Ekleme
Problem: Şirket yeni bir web sitesi yayınladı ve tüm sayfalara Google Analytics tracking kodu eklenmesi gerekiyor. Ancak site 50+ farklı PHP sayfasından oluşuyor ve her sayfaya manuel kod eklemek çok zaman alacak. Ayrıca bazı sayfalar dinamik olarak üretiliyor.
Çözüm: Add HTML Code modu kullanılarak tüm HTML sayfalarının <head> bölümüne Google Analytics kodu otomatik eklenir.
Konfigürasyon:
- Modify Type: Add HTML code
- HTML Tag:
<head></head> - Tag Modify Type: Append
- HTML Content to Add:
<!-- Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>- Conditions: HTTP Header Content-Type içerir
text/html
Sonuç:
- ✅ Otomatik enjeksiyon → Tüm HTML sayfalarına otomatik olarak Analytics kodu eklenir.
- ✅ Zaman tasarrufu → 50+ sayfa için manuel kod eklemeye gerek kalmaz.
- ✅ Dinamik sayfalar dahil → PHP, JSP gibi dinamik oluşturulan sayfalar da dahildir.
- ✅ Performans →
asyncvedeferkullanımı ile sayfa yüklenme hızı etkilenmez. - ✅ Content-Type koşulu → Sadece HTML sayfalarında aktif olur, JSON/XML yanıtları etkilenmez.
- ✅ Kurum Servisi değişikliği yok → Kurum Servisi kodunda hiçbir değişiklik gerekmez.
Sayfa çıktısı:
<!DOCTYPE html>
<html>
<head>
<!-- Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>
<title>Ana Sayfa</title>
...Senaryo 3: Replace Modu: Legacy Uygulama HTTP Linklerini HTTPS'e Dönüştürme
Problem: Eski ASP.NET uygulaması HTTP'den HTTPS'e geçirildi ancak uygulama kodunda hardcoded http:// linkleri var (örn: http://cdn.example.com, http://api.example.com). Kodu değiştirmek riskli ve zaman alıyor. Tarayıcılar mixed content (karışık içerik) uyarısı veriyor ve bazı kaynaklar yüklenmiyor.
Çözüm: Replace modu kullanılarak yanıt içeriğindeki tüm http:// linkleri https:// olarak değiştirilir ve mixed content sorunu çözülür.
Konfigürasyon:
- Modify Type: Replace
- Query Type: String
- Mask Query:
http:// - Case Sensitive: (işaretlenmez: arama harf duyarsız yapılır)
- New Content:
https:// - Conditions: HTTP Header Content-Type içerir
text/html
Sonuç:
- ✅ Mixed content çözümü → Tüm HTTP linkleri HTTPS'e dönüşür, tarayıcı uyarısı kalkar.
- ✅ Kaynak yükleme → CDN, API ve harici kaynaklar HTTPS üzerinden yüklenir, engellenmez.
- ✅ Güvenlik → Tüm içerik güvenli bağlantı üzerinden yüklenir.
- ✅ Kurum Servisi değişikliği yok → Legacy kod olduğu gibi kalır, risk alınmaz.
- ✅ Content-Type koşulu → Sadece HTML içerikte aktif olur, JSON/XML/resim dosyaları etkilenmez.
Örnek dönüşüm:
Girdi (Kurum Servisi yanıtı):
<img src="http://cdn.example.com/logo.png">
<script src="http://cdn.example.com/jquery.js"></script>
<a href="http://api.example.com/docs">API Docs</a>Çıktı (İstemciye giden yanıt):
<img src="https://cdn.example.com/logo.png">
<script src="https://cdn.example.com/jquery.js"></script>
<a href="https://api.example.com/docs">API Docs</a>