Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Affichage d'une page par exécution

6 réponses
Avatar
Gloops
Bonjour tout le monde,

Pour ouvrir une page citée dans un newsgroup, j'ai écrit il y a quelque
temps un programme qui copie la sélection, en retire les sauts de
lignes, puis l'exploite comme URL et ouvre la page dans un webbrowser.

Le webbrowser étant une émulation de IE6, ça donne de moins en moins
satisfaction.

J'ai réécrit l'équivalent, mais cette fois pour ouvrir la page dans le
navigateur par défaut du système.

Le principe est simple : après avoir récupéré l'URL sur le même principe
que précédemment, je l'exécute par l'API ShellExecute.

ça fonctionne très bien.

Je réalise que ça peut servir aussi à exécuter n'importe quelle
commande. Dans un bloc-notes j'ai tapé "Calc", que j'ai sélectionné, et
j'ai lancé mon programme : ça m'a affiché "Calc", j'ai validé, et ça m'a
ouvert la calculatrice.

Peut-on y voir une faille de sécurité ?

6 réponses

Avatar
Yliur
Le Mon, 5 Dec 2016 09:50:45 +0100
Gloops a écrit :
Bonjour tout le monde,
Pour ouvrir une page citée dans un newsgroup, j'ai écrit il y a
quelque temps un programme qui copie la sélection, en retire les
sauts de lignes, puis l'exploite comme URL et ouvre la page dans un
webbrowser.
Le webbrowser étant une émulation de IE6, ça donne de moins en moins
satisfaction.
J'ai réécrit l'équivalent, mais cette fois pour ouvrir la page dans
le navigateur par défaut du système.
Le principe est simple : après avoir récupéré l'URL sur le même
principe que précédemment, je l'exécute par l'API ShellExecute.
ça fonctionne très bien.
Je réalise que ça peut servir aussi à exécuter n'importe quelle
commande. Dans un bloc-notes j'ai tapé "Calc", que j'ai sélectionné,
et j'ai lancé mon programme : ça m'a affiché "Calc", j'ai validé, et
ça m'a ouvert la calculatrice.
Peut-on y voir une faille de sécurité ?

Globalement si le programme peut faire autre chose que ce qui est
strictement prévu, c'est dangereux. Et particulièrement s'il est
possible de lancer un programme quelconque sur ta machine.
Il doit y avoir un moyen de lancer ton navigateur en lui passant l'url
en paramètre, avec les échappements corrects, ce qui serait plus propre.
Avatar
Gloops
Le 05/12/2016 à 11:59, Yliur a écrit :
Le Mon, 5 Dec 2016 09:50:45 +0100
Gloops a écrit :
Bonjour tout le monde,
Pour ouvrir une page citée dans un newsgroup, j'ai écrit il y a
quelque temps un programme qui copie la sélection, en retire les
sauts de lignes, puis l'exploite comme URL et ouvre la page dans un
webbrowser.
Le webbrowser étant une émulation de IE6, ça donne de moins en moins
satisfaction.
J'ai réécrit l'équivalent, mais cette fois pour ouvrir la page dans
le navigateur par défaut du système.
Le principe est simple : après avoir récupéré l'URL sur le même
principe que précédemment, je l'exécute par l'API ShellExecute.
ça fonctionne très bien.
Je réalise que ça peut servir aussi à exécuter n'importe quelle
commande. Dans un bloc-notes j'ai tapé "Calc", que j'ai sélectionné,
et j'ai lancé mon programme : ça m'a affiché "Calc", j'ai validé, et
ça m'a ouvert la calculatrice.
Peut-on y voir une faille de sécurité ?

Globalement si le programme peut faire autre chose que ce qui est
strictement prévu, c'est dangereux. Et particulièrement s'il est
possible de lancer un programme quelconque sur ta machine.
Il doit y avoir un moyen de lancer ton navigateur en lui passant l'url
en paramètre, avec les échappements corrects, ce qui serait plus propre.

Je peux aussi, si il n'y a ni http:// ni https:// au début, ajouter
http:// ?
Là, ça part au navigateur ...
Avatar
Yliur
Le Mon, 5 Dec 2016 12:37:56 +0100
Gloops a écrit :
Le 05/12/2016 à 11:59, Yliur a écrit :
Le Mon, 5 Dec 2016 09:50:45 +0100
Gloops a écrit :
Bonjour tout le monde,
Pour ouvrir une page citée dans un newsgroup, j'ai écrit il y a
quelque temps un programme qui copie la sélection, en retire les
sauts de lignes, puis l'exploite comme URL et ouvre la page dans un
webbrowser.
Le webbrowser étant une émulation de IE6, ça donne de moins en
moins satisfaction.
J'ai réécrit l'équivalent, mais cette fois pour ouvrir la page dans
le navigateur par défaut du système.
Le principe est simple : après avoir récupéré l'URL sur le même
principe que précédemment, je l'exécute par l'API ShellExecute.
ça fonctionne très bien.
Je réalise que ça peut servir aussi à exécuter n'importe quelle
commande. Dans un bloc-notes j'ai tapé "Calc", que j'ai
sélectionné, et j'ai lancé mon programme : ça m'a affiché "Calc",
j'ai validé, et ça m'a ouvert la calculatrice.
Peut-on y voir une faille de sécurité ?

Globalement si le programme peut faire autre chose que ce qui est
strictement prévu, c'est dangereux. Et particulièrement s'il est
possible de lancer un programme quelconque sur ta machine.
Il doit y avoir un moyen de lancer ton navigateur en lui passant
l'url en paramètre, avec les échappements corrects, ce qui serait
plus propre.

Je peux aussi, si il n'y a ni http:// ni https:// au début, ajouter
http:// ?
Là, ça part au navigateur ...

Les questions de sécurité devraient être traitées proprement, pas avec
des bidouilles. Donc à moins que tu sois totalement certain du
fonctionnement complet de la fonction que tu exécutes, ça reste
dangereux.
Il n'y a qu'une manière de faire ça proprement, sans se tromper :
utiliser une fonction prévue pour ça, avec son mécanisme d'échappement
des paramètres.
Il existe sans doute une fonction permettant d'envoyer une url au
navigateur par défaut, plutôt que compter sur le comportement de
ShellExecute ? Après je ne sais pas comment ça marche sous windows,
si tu indiques ici dans quel langage ton programme est écrit quelqu'un
aurait peut-être une suggestion plus précise.
Avatar
Gloops
Le 05/12/2016 à 13:06, Yliur a écrit :
Le Mon, 5 Dec 2016 12:37:56 +0100
Gloops a écrit :
Le 05/12/2016 à 11:59, Yliur a écrit :
Le Mon, 5 Dec 2016 09:50:45 +0100
Gloops a écrit :
Bonjour tout le monde,
Pour ouvrir une page citée dans un newsgroup, j'ai écrit il y a
quelque temps un programme qui copie la sélection, en retire les
sauts de lignes, puis l'exploite comme URL et ouvre la page dans un
webbrowser.
Le webbrowser étant une émulation de IE6, ça donne de moins en
moins satisfaction.
J'ai réécrit l'équivalent, mais cette fois pour ouvrir la page dans
le navigateur par défaut du système.
Le principe est simple : après avoir récupéré l'URL sur le même
principe que précédemment, je l'exécute par l'API ShellExecute.
ça fonctionne très bien.
Je réalise que ça peut servir aussi à exécuter n'importe quelle
commande. Dans un bloc-notes j'ai tapé "Calc", que j'ai
sélectionné, et j'ai lancé mon programme : ça m'a affiché "Calc",
j'ai validé, et ça m'a ouvert la calculatrice.
Peut-on y voir une faille de sécurité ?

Globalement si le programme peut faire autre chose que ce qui est
strictement prévu, c'est dangereux. Et particulièrement s'il est
possible de lancer un programme quelconque sur ta machine.
Il doit y avoir un moyen de lancer ton navigateur en lui passant
l'url en paramètre, avec les échappements corrects, ce qui serait
plus propre.

Je peux aussi, si il n'y a ni http:// ni https:// au début, ajouter
http:// ?
Là, ça part au navigateur ...

Les questions de sécurité devraient être traitées proprement, pas avec
des bidouilles. Donc à moins que tu sois totalement certain du
fonctionnement complet de la fonction que tu exécutes, ça reste
dangereux.
Il n'y a qu'une manière de faire ça proprement, sans se tromper :
utiliser une fonction prévue pour ça, avec son mécanisme d'échappement
des paramètres.
Il existe sans doute une fonction permettant d'envoyer une url au
navigateur par défaut, plutôt que compter sur le comportement de
ShellExecute ? Après je ne sais pas comment ça marche sous windows,
si tu indiques ici dans quel langage ton programme est écrit quelqu'un
aurait peut-être une suggestion plus précise.

Je fais ça en C#, la recherche que j'ai faite m'a d'abord répondu
ShellExecute.
C'est vrai que ça marche, et puis après je me suis dit qu'il y avait
quand même au moins une question.
Pour la première version il n'y avait pas ce problème, car elle envoyait
d'office la chaîne de caractères vers le webBrowser, donc le pire qui
pouvait arriver c'était que le webBrowser ne trouve rien. Mais
maintenant il a vraiment du mal à effectuer le rendu de certaines pages,
quand il ne se casse pas le nez sur des scripts.
En principe on trouve un contrôle équivalent qui émule une version de
Firefox, mais ils ont oublié de préciser comment on s'en sert, alors le
navigateur par défaut devrait bien me tirer d'affaire.
Je devrais peut-être ouvrir un fil dans un forum C#, en incluant la
sécurité dans la question.
Aller chercher dans la base de registre quel programme est censé ouvrir
une page web c'est lourdingue par rapport à ce que j'ai fait, mais si
c'est plus sûr ...
Merci pour la réponse en tout cas.
Avatar
Yliur
Le Mon, 5 Dec 2016 13:16:39 +0100
Gloops a écrit :
Pour la première version il n'y avait pas ce problème, car elle
envoyait d'office la chaîne de caractères vers le webBrowser, donc le
pire qui pouvait arriver c'était que le webBrowser ne trouve rien.

Attention, il peut aussi s'agir d'urls vers des pages malveillantes.
Mais je suppose que c'est en réponse à un clic de ta part, donc rien de
pire que si tu cliquais toi-même dans ton navigateur. Attention si ce
traitement est appliqué automatiquement.
Mais maintenant il a vraiment du mal à effectuer le rendu de
certaines pages, quand il ne se casse pas le nez sur des scripts.
En principe on trouve un contrôle équivalent qui émule une version de
Firefox, mais ils ont oublié de préciser comment on s'en sert, alors
le navigateur par défaut devrait bien me tirer d'affaire.
Je devrais peut-être ouvrir un fil dans un forum C#, en incluant la
sécurité dans la question.

Les gens sauraient sans doute répondre, effectivement.
Aller chercher dans la base de registre quel programme est censé
ouvrir une page web c'est lourdingue par rapport à ce que j'ai fait,
mais si c'est plus sûr ...

Je pense que s'il existe une notion de navigateur par défaut au niveau
du système il y a un moyen de l'invoquer, sans forcément aller faire
des choses compliquées.
Avatar
Gloops
Le 05/12/2016 à 13:38, Yliur a écrit :
Le Mon, 5 Dec 2016 13:16:39 +0100
Gloops a écrit :
Pour la première version il n'y avait pas ce problème, car elle
envoyait d'office la chaîne de caractères vers le webBrowser, donc le
pire qui pouvait arriver c'était que le webBrowser ne trouve rien.

Attention, il peut aussi s'agir d'urls vers des pages malveillantes.
Mais je suppose que c'est en réponse à un clic de ta part, donc rien de
pire que si tu cliquais toi-même dans ton navigateur. Attention si ce
traitement est appliqué automatiquement.

C'est vrai que quelqu'un peut s'amuser à proposer des liens
malveillants, si ça ne le dérange pas d'être grillé après. Il faut
compter le temps que la première victime dispose à nouveau d'une machine
opérationnelle, avant de prévenir les autres.
Bon, ça, à part attendre que les autres aient eu le temps d'essuyer les
plâtres, la seule réponse que je voie est au niveau de l'antivirus.