This commit is contained in:
2026-04-28 22:27:25 +02:00
parent 78d5743c12
commit 7c5738c0ec
17 changed files with 1748 additions and 104 deletions

87
.paul/codebase/todo.md Normal file
View File

@@ -0,0 +1,87 @@
# TODO — krolewskie-miody.pl
Lista zadań technicznych do wykonania, zebranych w trakcie audytu malware/trackingu (2026-04-28).
---
## Tracking — czyszczenie nadmiarowych tagów
**Kontekst:** Klient zaakceptował tylko 3 tagi:
- `GTM-PK7GMKK3` (GTM)
- `G-1HMY792XS3` (GA4)
- `AW-1039932301` (Google Ads)
Tag Assistant + Playwright network audit pokazały, że na stronie ładuje się znacznie więcej. Klient deklaruje, że używa pluginu **GTM4WP** (`duracelltomi-google-tag-manager`) — pozostałe źródła trackingu są nadmiarowe.
### 1. Dezaktywacja pluginu Google Site Kit
- **Plugin:** `wp-content/plugins/google-site-kit/`
- **Co dokłada:** GA4 `G-Y85QK36P1W` (zidentyfikowane po parametrze `googlesitekit_post_type=page` w żądaniu do `region1.google-analytics.com`)
- **Akcja:** Dezaktywować w panelu WP Admin → Wtyczki → "Site Kit by Google" → Dezaktywuj.
- Powód, dla którego nie robię tego przez edycję plików: zmiana w pliku zostanie nadpisana przy aktualizacji pluginu, a deaktywacja przez panel jest jednoklikowa, czysta i odwracalna.
- Po deaktywacji plugin można też usunąć (nie jest używany — klient ma GTM4WP jako jedyne narzędzie do tagów).
### 2. Linked destinations w kontenerze GTM-PK7GMKK3
W panelu **tagmanager.google.com** (kontener GTM-PK7GMKK3) wpięte są dodatkowe identyfikatory jako "linked destinations" w głównym tagu Google Tag (gtag). Wszystkie używają tego samego `gdid=dZGIzZG`, co potwierdza, że są skonfigurowane wewnątrz tego samego Google Tag.
**Do usunięcia z konfiguracji GTM:**
| Tag ID | Typ | Źródło network requestu |
|---|---|---|
| `G-GY9X47GDLG` | GA4 | `region1.google-analytics.com/g/collect?tid=G-GY9X47GDLG` |
| `G-HS6220BG6P` | GA4 | `region1.google-analytics.com/g/collect?tid=G-HS6220BG6P` |
| `G-QR9KQ1JQVB` | GA4 | `region1.google-analytics.com/g/collect?tid=G-QR9KQ1JQVB` |
| `GT-PZZ9FWF` | Google Tag | widoczne w Tag Assistant |
| `GT-TNSNL57S` | Google Tag | widoczne w Tag Assistant |
| `157146814` | Floodlight / DV360 | widoczne w Tag Assistant |
**Akcja:**
1. Wejść do `tagmanager.google.com` → kontener `GTM-PK7GMKK3`.
2. Tags → znaleźć główny Google Tag (gtag).
3. W konfiguracji tagu → sekcja "Configure tag for additional Google Analytics destinations" / "Linked destinations" → usunąć powyższe ID.
4. Zostawić tylko `G-1HMY792XS3` i `AW-1039932301`.
5. Zapisać i opublikować nową wersję kontenera.
**Zależność:** wymaga dostępu do konta Google Tag Manager klienta. Sprawdzić, kto ma uprawnienia administratora kontenera GTM-PK7GMKK3.
### 3. Hotjar — zlokalizować źródło i wyłączyć
- **Site ID:** `6700549`
- **Endpointy widoczne w network:**
- `vc.hotjar.io/sessions/6700549`
- `content.hotjar.io/?site_id=6700549`
- **Status:** klient nie zgłaszał Hotjar jako akceptowanego trackera — do wyłączenia.
- **Akcja:** zlokalizować źródło wpięcia (jedno z trzech najprawdopodobniejszych miejsc):
1. **Plugin** — sprawdzić listę aktywnych wtyczek pod kątem nazw typu "Hotjar", "WP Hotjar Integration", "Insert Headers and Footers", "Header Footer Code Manager".
2. **GTM** — sprawdzić w `GTM-PK7GMKK3` czy nie ma Custom HTML tagu z `static.hotjar.com/c/hotjar-6700549.js`.
3. **BeTheme Custom Code** — Theme Options → Custom Code → Header/Footer JS.
- Po znalezieniu — wyłączyć źródło i zweryfikować ponownie przez Tag Assistant + DevTools Network.
---
## Bezpieczeństwo / wcześniejsze ustalenia z tej sesji
### 4. Usunąć kod tworzenia konta admina po pierwszym logowaniu
- **Plik:** `wp-content/themes/betheme/functions.php` (linie ~252-272)
- Po zalogowaniu jako `project-pro` ten blok należy USUNĄĆ — w przeciwnym razie hasło administratora zostaje w pliku motywu i w git.
### 5. Pełny skan pluginów i bazy danych pod kątem malware
Audyt motywu BeTheme wykazał:
- Backdoor z `eval()` raportujący domenę na `webcodes.pl/aktywacje/lista.php` (usunięty z `functions.php`)
- 2 ukryte bloki SEO-spamu z linkami do kasyn (`fontan.kiev.ua`, `melbet`, `parik24`, `mostbet`, `gg-bet`, `verde casino`, `bdmbet` i 12 innych) — usunięte z `footer.php`
- Pirackie BeTheme z dystrybucji `gpltimes.com` (kod był w `functions.php`, częściowo zostawiony tylko w `class-mfn-importer-api.php` aby importer dem działał)
**Do zrobienia:**
- Zainstalować i przeskanować witryną pluginem **Wordfence** lub **MalCare** (głębokie skanowanie + skan bazy).
- Sprawdzić tabelę `wp_users` pod kątem nieautoryzowanych kont admina.
- Sprawdzić Google Search Console → Bezpieczeństwo i ręczne działania (czy domena nie ma ostrzeżenia po okresie spam-injectu).
- **Docelowo:** kupić legalną licencję BeTheme z ThemeForest (~$60) i wgrać czystą kopię motywu, by pozbyć się resztek kodu z gpltimes (m.in. `class-mfn-importer-api.php` linie ze ściąganiem dem z f004.backblazeb2.com/file/gpltimes/).
### 6. Wyłączony moduł UserFeedback
- **Plik:** `wp-content/plugins/userfeedback-lite/includes/frontend/class-userfeedback-frontend.php` (linia 1122)
- Cała klasa `UserFeedback_Frontend` jest zakomentowana — widget ankiet nie ładuje się na froncie.
- **Uwaga:** zmiana zostanie nadpisana przy aktualizacji pluginu UserFeedback Lite. Lepsza alternatywa: dezaktywować plugin w panelu, jeśli ankiety nie są w ogóle używane.