Skip to content

Güvenlik ve CI doğrulamasını güçlendir - #1

Merged
husodrn46 merged 2 commits into
mainfrom
agent/security-hardening-ci-validation
Jul 30, 2026
Merged

Güvenlik ve CI doğrulamasını güçlendir#1
husodrn46 merged 2 commits into
mainfrom
agent/security-hardening-ci-validation

Conversation

@husodrn46

Copy link
Copy Markdown
Owner

Özet

Bu değişiklik, son güvenlik ve CI incelemesinde kalan üç somut boşluğu kapatır:

  • EAN-13 aktarımındaki GET tabanlı durum değişikliğini kaldırır; aktarımı M6 yetkili, CSRF korumalı POST akışına çevirir.
  • Temiz kurulumlarda brute-force korumasının ihtiyaç duyduğu M_GIRIS_LOG şemasını ve sorgu indekslerini ekler.
  • Bilinen açıkları bulunan üretim bağımlılıklarını güvenli sürümlere yükseltir ve Composer/CI güvenlik kapılarını sıkılaştırır.

Kök neden

  • barkod_ekle.php, GET ile gelen ean değerini sunucu tarafında POST/CSRF varmış gibi dönüştürüyordu.
  • M_GIRIS_LOG çalışma zamanında kullanılıyor ancak temiz kurulum şemalarında oluşturulmuyordu; bu durumda giriş koruması fail-open davranıyordu.
  • Composer yapılandırması TLS ve platform kontrolünü kapatıyor, kilit dosyasında Dompdf ve PhpSpreadsheet için bilinen güvenlik bildirimleri bulunuyordu.
  • CI kilit tutarlılığını ve güvenlik bildirimlerini doğrulamıyor; Action bağımlılıkları hareketli etiketlere bağlıydı.

Değişiklikler

  • EAN aktarımı POST + CSRF formuna taşındı ve EAN ekranına M6 yetki kapısı eklendi.
  • İdempotent sql/m_giris_log.sql ve gerekli indeksler eklendi.
  • dompdf/dompdf 3.1.6 ve phpoffice/phpspreadsheet 2.4.7 sürümüne yükseltildi; kilit dosyası Composer ile yeniden üretildi.
  • TLS/platform kontrolünü zayıflatan Composer ayarları kaldırıldı.
  • GitHub Action sürümleri tam commit SHA'larına sabitlendi.
  • CI'a strict Composer doğrulaması, platform kurulumu, güvenlik audit'i, PDF/XLSX duman testi, özyinelemeli gizli dosya kontrolü ve güvenlik regresyon kontrolleri eklendi.

Etki

Kullanıcı

Barkod üretip aktarma davranışı korunur; durum değişikliği artık yalnız yetkili ve geçerli CSRF oturumuyla yapılır.

Güvenlik

GET/CSRF atlatması kapanır, temiz kurulumlarda giriş hız sınırlama altyapısı hazır olur ve bilinen 14 bağımlılık bildirimi giderilir.

Geliştirici iş akışı

Kilit dosyası sapması, savunmasız üretim bağımlılıkları, hareketli Action referansları ve kritik güvenlik regresyonları PR aşamasında kırmızıya döner.

Doğrulama

  • PHP 8.2.32: 241/241 dosya ayrıştırıldı, 0 hata
  • PHP 8.3.32: 241/241 dosya ayrıştırıldı, 0 hata
  • scripts/validate.sh: SONUÇ: TAMAM
  • composer validate --strict --no-check-publish: başarılı
  • composer audit --locked --no-dev: bilinen güvenlik açığı yok
  • Dompdf PDF + PhpSpreadsheet XLSX duman testi: başarılı
  • actionlint .github/workflows/lint.yml: başarılı
  • scripts/security-regression.sh: başarılı
  • git diff --check: temiz

Yayın öncesi not

Mevcut kurulumlarda sql/m_giris_log.sql staging/üretim veritabanına uygulanmalı. Canlı SQL Server ve oturumlu HTTP akışı bu çalışma ortamında bulunmadığından, barkod aktarımı ile giriş kilidi staging üzerinde son kez doğrulanmalıdır.

husodrn46 and others added 2 commits July 29, 2026 11:47
PR'in CI'i PHP 8.2 job'unda basarisizdi:

  maennchen/zipstream-php 3.2.2 requires php-64bit ^8.3
  -> your php-64bit version (8.2.32) does not satisfy that requirement
  Your lock file does not contain a compatible set of packages.

PhpSpreadsheet'in dolayli bagimliligi olan zipstream 3.2'den itibaren
PHP 8.3 istiyor. composer.json ^8.2 diyor ve CI matrisi 8.2'yi iceriyor;
kilit dosyasi ise fiilen 8.3'e bagliydi. Uc ayri iddia, ucu de farkli.

Bu tutarsizlik PR'dan once de vardi (main'de zipstream 3.2.1, o da ^8.3)
ama "platform-check": false onu gizliyordu. PR maskeyi hakli olarak
kaldirdi; asil tutarsizligin da giderilmesi gerekti.

- zipstream ~3.1.2'ye sabitlendi (>=3.1.2 <3.2.0 — PHP 8.2 destekleyen
  son 3.1 serisi). Kesin surum "3.1.2" yerine tilde kullanildi: kesin
  kisit "composer validate --strict" altinda exit 1 veriyor ve CI'i bu
  kez baska yerden kirardi (olculdu).
- README "PHP 8.0+" diyordu; bagimliliklar zaten 8.1+ istiyor, kilit
  8.2+ -> "PHP 8.2+" olarak duzeltildi.
- Sabitlemenin NEDENI README'ye yazildi; yoksa ilk "guncelleme" bunu
  kaldirip sorunu geri getirir.

Guvenlik kaybi yok: zipstream'in hicbir surumunde bildirilmis acik
bulunmuyor (packagist advisories bos) ve "composer audit --locked
--no-dev" temiz kaliyor.

Dogrulama (yerel, PHP 8.1 + platform yok sayilarak kurulum)
  composer validate --strict --no-check-publish : gecerli (exit 0)
  composer audit --locked --no-dev              : acik yok
  scripts/dependency-smoke.php                  : PDF + XLSX uretildi
  scripts/security-regression.sh                : gecti
  php -l                                        : 241 dosya, 0 hata
@husodrn46
husodrn46 marked this pull request as ready for review July 30, 2026 06:15
@husodrn46
husodrn46 merged commit 636bae4 into main Jul 30, 2026
3 checks passed
@husodrn46
husodrn46 deleted the agent/security-hardening-ci-validation branch July 30, 2026 06:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant