Page 1 sur 1
Firefox 3 ne supporte pas FCKeditor
Publié : 08 déc. 2008, 07:19
par MARTEGAU
Bonjour à toutes et à tous,
sur le site que je suis en train de créer (sur Easyphp), il faut que je place un formulaire avec FCKeditor. Tout se passe bien avec IE7, mais avec Firefox, je ne vois qu'une moitié gauche de mon formulaire !!!(il est coupé en deux dans le sens de la hauteur)
Si j'actionne l'option de IETab, alors là mon formulaire paraît en entier.
Quelqu'un a t-il eu ce problème et où faut-il agir sur Firefox afin que le formulaire paraisse entier dès l'ouverture de la page.
Merci d'avance pour votre aide
NB : j'utilise Windows XP Pro
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.4) Gecko/2008102920 Dealio Toolbar 3.1 Firefox/3.0.4
Publié : 08 déc. 2008, 09:42
par Mori
salut,
a) mets en ligne l'adresse, ou des pages du site, pour que des vérifications de validité soit opérées selon les standards
http://www.w3.org/QA/Tools/
b) je déplace dans la bonne section
Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.4) Gecko/2008111309 Firefox
Re: Firefox 3 ne supporte pas FCKeditor
Publié : 08 déc. 2008, 09:58
par calimo
MARTEGAU a écrit :Si j'actionne l'option de IETab, alors là mon formulaire paraît en entier.
Et pour cause, puisque tu l'ouvres avec IE.
Tu dois certainement avoir fait une erreur quelque part, mais c'est très difficile à dire quoi sans le moindre bout de code

Publié : 08 déc. 2008, 10:44
par MARTEGAU
Merci pour vos réponses. Voici le script qui me permet d'éditer du texte :
Code : Tout sélectionner
<!-- Installation de FCKeditor-->
<?php
include("../FCKeditor/fckeditor.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>correction des Newsletters</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<!--Dans ce script :
1- On appelle une Newsletter
2- On l'affiche dans le formulaire pour la modifier
3- On l'enregistre dans la table "Newslettter"
-->
<style type="text/css">
form
{
position:absolute;
top:10%;
left:20%
}
input
{
position:absolute;
color:blue;
left:45%;
}
h2
{
position:absolute;
left:30%;
/*top:5%;*/
}
/*.tableau
{
position:absolute;
left:40%;
top:20%;
}*/
</style>
</head>
<body>
<!-- Retour page de choix-->
<a href="choix_news.php" title="Retour page du choix">Return</a>
<?php
//On se connecte à Mysql
mysql_connect("localhost","root");
mysql_select_db("test");
//Si on a demandé à modifier une newsletter
if (isset($_GET['modifier']))
{
$retour=mysql_query('SELECT * FROM newsletter WHERE ID=' . $_GET['modifier']);
$donnees=mysql_fetch_array($retour);
$titre=stripslashes($donnees['TITRE']);
$contenu=stripslashes($donnees['CONTENU']);
$champ_cache=$donnees['ID'];//on rentre la valeur de l'ID pour savoir que c'est une news modifiée
}
?>
<!--Formulaire de modif-->
<h2>MODIFICATION DES NEWSLETTERS</h2>
<form method="post" action="choix_news.php"><!--on retourne sur le tableau des choix (choix_news.php)-->
<!--FCKeeditor-->
<?php
$oFCKeditor = new FCKeditor('CONTENU');//variable qui s'enregistrera dans la bdd
$oFCKeditor->Basepath ='/FCKeditor/';
$oFCKeditor->Value = $contenu;//On affiche le contenu de la variable
$oFCKeditor->Width = '80%';//largeur du formulaire de saisie
$oFCKeditor->Height = '500';//hauteur du formulaire de saisie
$oFCKeditor->Create() ;
?>
<p>
<label>Titre de la Newsletter<input name="TITRE" value="<?php echo $titre; ?>" size="40" tabindex="10"/></label><br/><br/><br/>
<input type="hidden" name="CACHE" value="<?php echo $champ_cache; ?>"/>
<input type="submit" value="Enregistrez"/>
</p>
</form>
<?php
//On se déconnecte de Mysql
mysql_close();
?>
</body>
</html>
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.4) Gecko/2008102920 Dealio Toolbar 3.1 Firefox/3.0.4
Publié : 08 déc. 2008, 11:32
par teoli2003
C'est la partie générée qui est intéressante, pas la partie avant l'interpréteur php.
A noter que ça, c'est du code très apprécié par les hacker. Tu balances ton GET à la base de donnée sans avoir contrôlé son type...
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
Publié : 08 déc. 2008, 11:53
par calimo
teoli2003 a écrit :A noter que ça, c'est du code très apprécié par les hacker.
Surtout que tu es loggué en root
Il suffit que $_GET['modifier'] contienne un ; (pour terminer la commande select) puis un drop database, et c'est le drame !
Tu peux même essayer toi-même pour voir : dans le champ "modifier", mets

(bien sûr tu as fait une sauvegarde avant !)
Publié : 08 déc. 2008, 11:56
par teoli2003
calimo a écrit :teoli2003 a écrit :A noter que ça, c'est du code très apprécié par les hacker.
Surtout que tu es loggué en root
Il suffit que $_GET['modifier'] contienne un ; (pour terminer la commande select) puis un drop database, et c'est le drame !
Tu peux même essayer toi-même pour voir : dans le champ "modifier", mets

(bien sûr tu as fait une sauvegarde avant !)
C'est à cela que je pensais. A noter que cela ne marche pas avec les très vieilles versions de Mysql.
Mais sans aller si loin (détruire la base), cela peut être utilisé pour faire des INSERT et des UPDATE

Plus discret et plus vicieux.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
Publié : 08 déc. 2008, 13:52
par MARTEGAU
Bon, vous me faites peur les gars. Quel bout de script faut-il que j'écrive pour protéger mes bases ?
Merci
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.4) Gecko/2008102920 Dealio Toolbar 3.1 Firefox/3.0.4
Publié : 08 déc. 2008, 14:27
par calimo
MARTEGAU a écrit :Bon, vous me faites peur les gars.
C'est le but. Internet est dangereux, et il faut avoir peur !
- se logguer comme simple utilisateur avec des droits le plus limités possible (select, et si nécessaire insert/update sont probablement le maximum). Un utilisateur séparé pour les select et un pour les insert/update n'est probablement pas superflu ;
- Vérifier les données. Ne fais pas confiance aux utilisateurs, il y en aura toujours un pour tout casser si tu laisse la moindre porte ouverte (sans que ce soit forcément malveillant, mais une erreur est si vite arrivée). Ici, utilise une regex ancrée au début (^) et à la fin ($) pour vérifier le format correct (p.ex "^\d+$"). Dans des champs de texte, c'est plus compliqué. Utilise la fonction mysqli_real_escape_string pour désactiver guillemets et point-virgules pour les transformer en texte inactif. Dans les champs type cases à cocher, utilise switch et assigne la valeur "manuellement" (sans récupérer la valeur envoyée). Etc.

Publié : 08 déc. 2008, 14:46
par MARTEGAU
Ok merci Calimo.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.4) Gecko/2008102920 Dealio Toolbar 3.1 Firefox/3.0.4
Publié : 12 déc. 2008, 18:02
par Echtelion
Pour améliorer très légerement ta sécurité, met toujours tes expression WHERE entre guillemets, même pour des entiers. Rajouter des ";" à la fin de chaque requête est aussi une bonne habitude
Exemple dans ton code :
Code : Tout sélectionner
$retour=mysql_query('SELECT * FROM newsletter WHERE ID=' . $_GET['modifier']);
par :
Code : Tout sélectionner
$retour=mysql_query('SELECT * FROM newsletter WHERE ID="' . $_GET['modifier']+'";');
ta requête va se retrouver avec un bon :
SELECT * FROM newsletter WHERE ID="3";
Auparavant :
SELECT * FROM newsletter WHERE ID=3
Si quelqu'un essayait de faire : -> 5; drop database test; <-
La requête donne :
SELECT * FROM newsletter WHERE ID="5; drop database test;";
Dans le pire des cas, tu auras une erreur te disant qu'il a pas put interpréter "5; drop database test;" en tant qu'entier, au mieux il y aura 0 résultat à ta requêtes.
Dans tout les cas, tu évites déjà 95% des attaques par injection sql.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
Publié : 13 déc. 2008, 06:48
par MARTEGAU
Grand merci Etchelion,
Je vais corriger mes scripts dans ce sens.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.4) Gecko/2008102920 Dealio Toolbar 3.1 Firefox/3.0.4
Publié : 13 déc. 2008, 17:06
par calimo
Noooon !!!!!
Echtelion a écrit :par :
Code : Tout sélectionner
$retour=mysql_query('SELECT * FROM newsletter WHERE ID="' . $_GET['modifier']+'";');
Il reste une
grosse faille dans ce code, car il suffit au client de passer un guillemet pour qu'il puisse à nouveau faire ce qu'il veut. 95% ce n'est pas suffisant.
D'où les précautions (utilisateur à droits limités pour les select) et vérifications précisées plus haut
Puisqu'il faut un bout de code :
Code : Tout sélectionner
$ma_valeur_validee = tout_plein_de_vérifications($_GET['modifier']);
$retour=mysql_query('SELECT * FROM newsletter WHERE ID="' . mysql_real_escape_string($ma_valeur_validee)+'";');
Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4
Publié : 14 déc. 2008, 07:30
par MARTEGAU
Merci Calimo. Je vais de ce pas re-corriger mes scripts.
Merci à tous.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.4) Gecko/2008102920 Dealio Toolbar 3.1 Firefox/3.0.4