Lulu
2020-03-02 19:31:29 UTC
Bonjour,
J'ai un formulaire avec 4 inputs de type "zone de saisie" (destinées à
des valeurs numeriques entières), 3 inputs de type "radio" et 11 inputs
de type "checkbox".
Le formulaire est de méthode "post" et je récupère le contenu des inputs
par une série de ligne du type $WL_start = $_POST['WL_start']
Pour les zones de saisie, je traite cette saisie par :
<?php
// si ce test est positif, c'est que l'utilisateur a saisi une valeur et cliqué
// le bouton "Dessiner le spectre"
if ( isset( $WL_start ) ) {
// il faut donc remettre la valeur de Value_WL_start à la valeur que l'utilisateur
// a postée à condition qu'elle soit "attendue"
// en premier lieu : numérique
if ( is_numeric( $WL_start ) ) {
$x = floor( $WL_start );
// en deuxième lieu, entière
if ( $x != $WL_start ) {
$WL_start = 380;
} else {
// en troisème lieu, dans le domaine visible, sinon 380 nm
if ( ( $x < 380 ) or ( $x >= 800 ) ) {
$WL_start = 380;
}
}
// non numérique :
} else {
$WL_start = 380;
}
}
?>
Est-ce que ce code empêche qu'un script-kiddie puisse falsifier le
comportement que j'attends de ma page ?
Pour mes trois boutons radios, je n'ai que le test de la valeur de la
variable "name" de mon input :
<?php
if ( ! isset( $choix_spectre ) ) {
//echo "choix_spectre is NOT set, setting it to 2 <br />\n";
$choix_spectre = 2;
}
if ( $choix_spectre == 1 ) {
//echo " --> Spectre continu<br />\n";
$checked_1 = "checked";
$checked_2 = "";
$checked_3 = "";
} else {
if ( $choix_spectre == 2 ) {
//echo " --> Spectre d'émission<br />\n";
$checked_1 = "";
$checked_2 = "checked";
$checked_3 = "";
} else {
if ( $choix_spectre == 3 ) {
//echo " --> Spectre d'absorption<br />\n";
$checked_1 = "";
$checked_2 = "";
$checked_3 = "checked";
}
}
}
Et pour mes onze cases à cocher :
<?php
if ( !empty( $_POST['elements'] ) ) {
foreach( $_POST['elements'] as $val ) {
if ( $val == 'H') {
$La_string_elements = $La_string_elements.$val.",";
$checked_H = "checked";
}
if ( $val == 'He') {
$La_string_elements = $La_string_elements.$val.",";
$checked_He = "checked";
}
if ( $val == 'Li') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Li = "checked";
}
if ( $val == 'Na') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Na = "checked";
}
if ( $val == 'Mg') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Mg = "checked";
if ( $val == 'Ar') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Ar = "checked";
}
if ( $val == 'Ca') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Ca = "checked";
}
if ( $val == 'Ti') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Ti = "checked";
}
if ( $val == 'Mn') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Mn = "checked";
}
if ( $val == 'Fe') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Fe = "checked";
}
if ( $val == 'Hg') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Hg = "checked";
}
}
// Retirer la dernière virgule de la liste
$La_string_elements = substr($La_string_elements, 0, -1);
}
Pour les boutons radios ou cases à cocher, y a-t-il des précautions
élémentaires à prendre pour éviter l'utilisateur malicieux ?
Ce formulaire n'est pas destiné à remplir une base de donnée, juste à
fabriquer une chaîne de caractères qui sert à appeler un script python
avec "passthru( $zeCommandLine )" pour fabriquer une image ensuite
afficher dans la page.
Merci de vos avis.
J'ai un formulaire avec 4 inputs de type "zone de saisie" (destinées à
des valeurs numeriques entières), 3 inputs de type "radio" et 11 inputs
de type "checkbox".
Le formulaire est de méthode "post" et je récupère le contenu des inputs
par une série de ligne du type $WL_start = $_POST['WL_start']
Pour les zones de saisie, je traite cette saisie par :
<?php
// si ce test est positif, c'est que l'utilisateur a saisi une valeur et cliqué
// le bouton "Dessiner le spectre"
if ( isset( $WL_start ) ) {
// il faut donc remettre la valeur de Value_WL_start à la valeur que l'utilisateur
// a postée à condition qu'elle soit "attendue"
// en premier lieu : numérique
if ( is_numeric( $WL_start ) ) {
$x = floor( $WL_start );
// en deuxième lieu, entière
if ( $x != $WL_start ) {
$WL_start = 380;
} else {
// en troisème lieu, dans le domaine visible, sinon 380 nm
if ( ( $x < 380 ) or ( $x >= 800 ) ) {
$WL_start = 380;
}
}
// non numérique :
} else {
$WL_start = 380;
}
}
?>
Est-ce que ce code empêche qu'un script-kiddie puisse falsifier le
comportement que j'attends de ma page ?
Pour mes trois boutons radios, je n'ai que le test de la valeur de la
variable "name" de mon input :
<?php
if ( ! isset( $choix_spectre ) ) {
//echo "choix_spectre is NOT set, setting it to 2 <br />\n";
$choix_spectre = 2;
}
if ( $choix_spectre == 1 ) {
//echo " --> Spectre continu<br />\n";
$checked_1 = "checked";
$checked_2 = "";
$checked_3 = "";
} else {
if ( $choix_spectre == 2 ) {
//echo " --> Spectre d'émission<br />\n";
$checked_1 = "";
$checked_2 = "checked";
$checked_3 = "";
} else {
if ( $choix_spectre == 3 ) {
//echo " --> Spectre d'absorption<br />\n";
$checked_1 = "";
$checked_2 = "";
$checked_3 = "checked";
}
}
}
Et pour mes onze cases à cocher :
<?php
if ( !empty( $_POST['elements'] ) ) {
foreach( $_POST['elements'] as $val ) {
if ( $val == 'H') {
$La_string_elements = $La_string_elements.$val.",";
$checked_H = "checked";
}
if ( $val == 'He') {
$La_string_elements = $La_string_elements.$val.",";
$checked_He = "checked";
}
if ( $val == 'Li') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Li = "checked";
}
if ( $val == 'Na') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Na = "checked";
}
if ( $val == 'Mg') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Mg = "checked";
if ( $val == 'Ar') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Ar = "checked";
}
if ( $val == 'Ca') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Ca = "checked";
}
if ( $val == 'Ti') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Ti = "checked";
}
if ( $val == 'Mn') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Mn = "checked";
}
if ( $val == 'Fe') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Fe = "checked";
}
if ( $val == 'Hg') {
$La_string_elements = $La_string_elements.$val.",";
$checked_Hg = "checked";
}
}
// Retirer la dernière virgule de la liste
$La_string_elements = substr($La_string_elements, 0, -1);
}
Pour les boutons radios ou cases à cocher, y a-t-il des précautions
élémentaires à prendre pour éviter l'utilisateur malicieux ?
Ce formulaire n'est pas destiné à remplir une base de donnée, juste à
fabriquer une chaîne de caractères qui sert à appeler un script python
avec "passthru( $zeCommandLine )" pour fabriquer une image ensuite
afficher dans la page.
Merci de vos avis.