feat(sync): http:// limite au reseau local, Basic des la 1re requete
APK : le clair est permis par Android et trie dans TSyncClient.RefusalReason (IsLocalHost : RFC 1918, 127.x, .local, .lan, nom sans point) - chacun pointe vers son propre WebDAV sans IP connue a la compilation ; vers Internet, HTTPS. PC : Authorization Basic envoye d'emblee, plus de 401 anonyme ni de PUT du coffre envoye deux fois. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,30 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Le trafic en clair n'est permis que vers la BOUCLE LOCALE, et interdit
|
||||
partout ailleurs.
|
||||
Le clair est PERMIS ICI, et trie dans le code (PMA.SyncClient.IsLocalHost).
|
||||
|
||||
Il l'etait auparavant partout, via usesCleartextTraffic="true". C'etait pour
|
||||
une seule raison : l'essai local passe par "adb reverse", qui fait voir le
|
||||
poste comme 127.0.0.1 et parle HTTP. Mais l'attribut ne distingue pas la
|
||||
boucle locale du reste du monde - une URL mal saisie, ou un serveur repassant
|
||||
en HTTP, envoyait le jeton en clair sur le reseau sans que rien ne le signale.
|
||||
|
||||
Ici la permission est nominative. Le jeton ne peut plus sortir qu'en TLS, et
|
||||
une URL "http://" vers un vrai hote echoue tout de suite, ce qui est
|
||||
exactement le comportement voulu : bruyant, pas silencieux.
|
||||
|
||||
cleartextTrafficPermitted="false" a la racine n'est pas redondant avec le
|
||||
defaut d'Android 9+ : il vaut aussi pour les versions anterieures, et il dit
|
||||
l'intention noir sur blanc.
|
||||
Chacun pointe vers SON serveur WebDAV, souvent en http:// sur son reseau
|
||||
local, a une adresse qu'on ne connait pas a la compilation - et Android ne
|
||||
sait autoriser ni une plage ni un masque, seulement des noms un par un.
|
||||
Avant tout envoi, la synchro refuse donc tout http:// qui ne vise pas le
|
||||
reseau local (RFC 1918, boucle, .local, .lan, nom sans point) : vers
|
||||
Internet, le jeton ne part qu'en HTTPS, et le refus s'affiche au lieu de
|
||||
laisser passer en silence.
|
||||
-->
|
||||
<network-security-config>
|
||||
<base-config cleartextTrafficPermitted="false" />
|
||||
<domain-config cleartextTrafficPermitted="true">
|
||||
<domain includeSubdomains="false">127.0.0.1</domain>
|
||||
<domain includeSubdomains="false">localhost</domain>
|
||||
<!-- ponytail: WebDAV local du poste (IP fixe), en clair sur le Wi-Fi.
|
||||
Le coffre reste chiffre ; le mot de passe WebDAV, lui, passe en
|
||||
clair. A retirer quand le serveur parlera HTTPS. -->
|
||||
<domain includeSubdomains="false">192.168.1.28</domain>
|
||||
</domain-config>
|
||||
<base-config cleartextTrafficPermitted="true" />
|
||||
</network-security-config>
|
||||
|
||||
Reference in New Issue
Block a user