OVH Cloud OVH Cloud

appel de fonction paramétrable ?

38 réponses
Avatar
unbewusst.sein
j'ai une string search|save|edit|view et je voudrais qu'elle appelle les
fonctions relatives, par exemple :
do_search(params) | do_save(params) | do_edit(params) | do_view(params)

comment kon fait ?

--
« Qui prête à rire, n'est pas sûr d'être remboursé. »
(Raymond Devos)

8 réponses

1 2 3 4
Avatar
Mickaël Wolff
On 07/23/11 02:26, mb wrote:
ça parait plus clair ,
je ne fais pas de fixation sur la fonction eval ,
mais tronquer un langage de ses fonctions alors que c'est lui qui permet
d'améliorer la sécurité à la source c'est pas raisonnable



Bannir les fonctionnalités et les habitudes qui mènent à des erreurs
et une bonne pratique, que ce soit en matière de sécurité qu'en matière
de gestion de projet. Lorsqu'on utilise un language, une technologie, il
faut l'utiliser dans les limites de ces connaissances, et n'utiliser que
ce qu'on est certain de pouvoir maîtriser. Sinon tu vas au devant de
profonds problèmes.

je n'ai pas analysé complètement le comportement en cas d'erreur ,
il y a des cas ou il abandonne le script complètement d'autres où il
passe à la ligne suivante
( je n'en ai pas vu ou il passe à l'instruction suivante sur la même
ligne )


Ah, tu programme par hasard.

il faudrait être sùr de pouvoir analyser tous les cas possibles ,
lors d'une modification on sait bien qu'il peut y avoir des répercussions



C'est pourquoi il faut utiliser des listes blanches, pour garantir le
comportement.
Avatar
mb
In article <4e2e54c1$0$13101$,
Mickaël Wolff wrote:

On 07/24/11 00:05, mb wrote:
> mais quand vous écrivez ( ne chipotez pas sur la syntaxe svp )

> que croyez vous que fait l'interprète javascript sur un
> onClick="texte"; ?
> eval(texte)
Ben nom (ter)

> je ne fais que reprendre votre affirmation
> et elle est fausse , javascript est interprété et donc ne change pas le
> texte en code , il interprète le texte ( un peu comme la version switch
> dont on parlait )

Cest là que tu as tout faux. Les moteurs JS *compilent* le Javascript
en bytecode, et le mettent en cache.



pour pouvoir compiler du code javascript il va être obligé de
l'interpréter d'une façon ou d'une autre , il y a peut-être un gain pour
les appels à partir du html car le texte est "fixe"
mais en cas d'appel à eval ou une indirection comme
innerHTML="..."
ou un "javascript:texte"
pourquoi le compiler ( avec un passage par interprétation ) d'abord et
ensuite l'exécuter ? il me semble qu'il y a perte de temps
et je doute qu'ils aient fait ça

Tiens, ça me rappelle un guignol qui soutenait que les buffer
overflow ne sont pas liés à des problème de sécurité puisque ce sont des
erreurs de programmation.



j'apprécie que le guignol ne soit pas moi !
Les erreurs de programmations mènent systématiquement à des problèmes
de sécurité.



si on pousse un peu plus loin

les fautes de frappes
les orages
le chat qui marche sur le clavier
...

je conseille donc de débrancher la prise pour éviter tous risques

bonne journée

--
mb
Avatar
mb
In article <4e2e5339$0$26708$,
Mickaël Wolff wrote:

On 07/22/11 10:17, mb wrote:
> donc il faut être certain de tout savoir avant de se lancer à écrire
> quelque chose ?

Non, mais raconter n'importe quoi et le soutenir est plus gênant. Le
développement Web cest compliqué, demande beaucoup d'expertise et
surtout de prudence. Si tu crois le contraire, abandonne de suite.



je ne le crois pas
mais qui peut être sûr qu'après des expertises par des pro qui peuvent
être de niveaux différents , il ne reste pas de fautes dangereuses ?

vous claquez la porte au nez de tous les amateurs et dévelopeurs
débutants , c'est du mépris ?

clamer sur tous les toits que js est dangereux
c'est la meilleure solution pour faire peur à tous le monde
et pousser les gens à "débrancher" leur js et se retrouver avec des
sites statiques ( mais pas forcément inintérressant )
mais ils continue à utiliser des formes , des jeux dont on ne sait pas
trop ce qu'ils chargent ...

et pour aller un peu plus loin , qui dit qu'un bug
dans un lecteur de news ne va pas provoquer des catastrophes ?

n'y-a-t-il pas de compromis à trouver entre
ne rien vérifier ( inacceptable )
et tout vérifier ( impossible ) ?

bonne journée

--
mb
Avatar
mb
In article <4e2e5603$0$10644$,
Mickaël Wolff wrote:

On 07/23/11 02:26, mb wrote:
> ça parait plus clair ,
> je ne fais pas de fixation sur la fonction eval ,
> mais tronquer un langage de ses fonctions alors que c'est lui qui permet
> d'améliorer la sécurité à la source c'est pas raisonnable

Bannir les fonctionnalités et les habitudes qui mènent à des erreurs
et une bonne pratique, que ce soit en matière de sécurité qu'en matière
de gestion de projet. Lorsqu'on utilise un language, une technologie, il
faut l'utiliser dans les limites de ces connaissances, et n'utiliser que
ce qu'on est certain de pouvoir maîtriser. Sinon tu vas au devant de
profonds problèmes.



certes
il faut aussi faire confiance à ceux qui ont écrit js et sa fonction eval
qui sont eux aussi des pro et probablement des meilleurs

merci pour eux ,

bonne journée

--
mb
Avatar
Pierre Goiffon
On 26/07/2011 07:40, Mickaël Wolff wrote:
Hahaha. Ce n'est pas toujours facile, mais si tu introduis la chaîne
suivante dans la variable nom :


(...)
Très intéressants exemples, merci Mickaël !
Avatar
Mickaël Wolff
On 07/26/11 08:04, mb wrote:

pour pouvoir compiler du code javascript il va être obligé de
l'interpréter d'une façon ou d'une autre , il y a peut-être un gain pour
les appels à partir du html car le texte est "fixe"



Le gain sera sensible si le Javascript est embarqué dans une page
HTML statique ou un fichier Javascript lié.

mais en cas d'appel à eval ou une indirection comme
innerHTML="..."



C'est une des raisons pour lesquelles il faut, en général, bannir la
fonction eval et l'insertion dynamique d'éléments script. L'autre raison
est la difficulté de debug qu'introduisent ces outils si on les utilise
de manière intensive.

La seule raison valable d'usage d'eval que j'entrevoie, c'est
lorsqu'on récupère un JSON depuis un XHR.

ou un "javascript:texte"



Ceci n'existe pas.


pourquoi le compiler ( avec un passage par interprétation ) d'abord et
ensuite l'exécuter ? il me semble qu'il y a perte de temps
et je doute qu'ils aient fait ça



La compilation fait partie du processus d'interprétation.
L'interprétation d'un document Javascript se fait en plusieurs passes.
En gros, d'abord il fait une analyse syntaxique, ce qui permet de
découper le script en mots (léxèmes). Dès lors, l'interpréteur JS a une
représentation prémâchée du script. Il peut soit la mettre de côté en
cache, pour usage ultérieur, ou la jeter (c'est la phase que tu appelle
« perte de temps »). Après quoi, il exécute le bytecode.

j'apprécie que le guignol ne soit pas moi !



Fais pas le malin, tu m'as aussi énervé ;)

si on pousse un peu plus loin

les fautes de frappes



Oui. Les fautes de frappes sont un véritable fléau pour le
programmeur, surtout quand la faute de frappe fait tomber en marche
l'application.

les orages



C'est pourquoi chacun de mes ordinateurs sont équipés d'un onduleur.

le chat qui marche sur le clavier



Ton poste de travail est ma organisé :p
Avatar
Mickaël Wolff
On 07/26/11 08:47, mb wrote:

certes
il faut aussi faire confiance à ceux qui ont écrit js et sa fonction eval
qui sont eux aussi des pro et probablement des meilleurs



<http://www.amazon.com/exec/obidos/ASIN/0596517742/wrrrldwideweb>

Douglas Crockford est le bonhomme qui a écrit LiveScript pour
Netscape Server puis l'a porté dans Netscape Communicator sous le nom de
JavaScript. Dans son livre, « JavaScript: the Good Parts », il détaille
les fonctionnalités intéressantes de JavaScript. Cependant, il y a aussi
un beau chapitre sur toutes les horreurs qu'il a créé. Ce sont les
erreurs de design qu'il a commises lorsqu'il a créé Javascript, et dont
il faut être conscient quand on développe en Javascript.

Un des principe fondamental à observer scrupuleusement quand on
développe, surtout dans le Web, c'est de ne jamais faire confiance. Il
faut savoir ce qu'on publie. Le problème n'est pas la fonction eval en
elle-même. C'est son usage qui peut poser problème en raison de sa
puissance. Chaque appel à eval doit être contrôlé et protéger parce
qu'elle permet des attaques. C'est comme lorsque tu enregistre des
données en base de donnée en construisant la requête, ou quand tu créé
un document HTML ou XML : tu utilises les fonctions adéquates pour
éviter que ce ne soient des points d'attaque.

Quand au côté professionnel, ce n'est pas parce que des gens sont
payés qu'ils ne font pas d'erreur. C'est d'ailleurs le piment de notre
métier, toujours repousser nos limites de la compréhension des systèmes
d'information. On ne peut pas faire un système totalement sécurisé
utilisable, mais on peut au moins faire en sorte que les erreurs connues
ne soient pas réitérées.
Avatar
Mickaël Wolff
On 07/26/11 08:26, mb wrote:
je ne le crois pas



Qu'est-ce que tu ne crois pas ? Que le développement web demande de
l'expertise ?

mais qui peut être sûr qu'après des expertises par des pro qui peuvent
être de niveaux différents , il ne reste pas de fautes dangereuses ?



Personne ne peut être certain d'une sécurité à 100%. Il y a toujours
des trous. Mais éviter les plus communs est déjà un bon début. Les codes
reviews sont une méthode intéressante pour lutter contre les bogues
récalcitrants.

vous claquez la porte au nez de tous les amateurs et dévelopeurs
débutants , c'est du mépris ?



Je ne claque pas la porte, j'averti. J'ai (trop) longtemps travaillé
en support chez un hébergeur Internet, et j'ai du couper de (trop)
nombreux serveurs qui étaient compromis parce que la sécurité était le
cadet des soucis du développeur ou de l'admin de la machine.


clamer sur tous les toits que js est dangereux
c'est la meilleure solution pour faire peur à tous le monde
et pousser les gens à "débrancher" leur js et se retrouver avec des
sites statiques ( mais pas forcément inintérressant )



http://noscript.net/features

Les plus prudents, utilisent des navigateurs différents pour leurs
outils d'administration.


mais ils continue à utiliser des formes , des jeux dont on ne sait pas
trop ce qu'ils chargent ...



Des formes ?


et pour aller un peu plus loin , qui dit qu'un bug
dans un lecteur de news ne va pas provoquer des catastrophes ?



C'est pourquoi il faut que l'ensemble des applications qu'on utilise
soit à jour, pour réduire les risques de compromissions dues à un bogue
connu. Ensuite, il faut que l'interface chaise-clavier ne fasse pas
n'importe quoi en ouvrant n'importe quel fichier de n'importe quelle
provenance.

n'y-a-t-il pas de compromis à trouver entre
ne rien vérifier ( inacceptable )
et tout vérifier ( impossible ) ?



Pas en programmation. Tu confond l'usage et la création d'un outil.
Les outils que nous développons doivent valider tout les input (au bon
endroit). C'est fastidieux, ça prend du temps, c'est chiant parfois,
mais c'est nécessaire (ou alors, ça peut te coûter cher).
1 2 3 4