[AJAX] Sécurité Ajax , un test
Bonjour
je suis en train de tester ajax , et dans le souci de sécuriser l'appli , je poste ici , une réflexion au sujet du traitement de la réponse ,
mon souci premier étant le filtrage de celle-ci dans le sens ou l'on pourrai dans un cas extème m'envoyer des données agressives , je vous fait par du code de test , il est bien sur simpliste
la réponse provenant de la page chargée de la délivrer
elle peut provenir de mysql , la réponse mysql est écrite sous forme très simpliste , de la forme
image1.jpg*titre1*résumé1|image2.jpg*titre2*résumé2|image3.jpg*titre3*résumé3
et voici mon script ajax qui traite cette réponse
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| function XR(k) {
k = parseInt(k);
if (k === 1) {
alert('Votre navigateur ne supporte pas le protocole Ajax , désolé');
} else if (k === 2) {
alert('La connexion au document a échoué , désolé');
}
}
var NI = navigator.userAgent.toLowerCase().indexOf('msie') != -1 ? 1 : 0;
function SAF(x) {
return x.replace(/[^a-zA-Z0-9 *-|]/gi, '');
}
function XC(k, v) {
var x;
if (window.XMLHttpRequest) {
x = new XMLHttpRequest();
} else if (window.ActiveXObject) {
x = new ActiveXObject('Msxml2.XMLHTTP');
} else if (window.ActiveXObject) {
x = new ActiveXObject('Microsoft.XMLHTTP');
} else {
XR(1);
return;
}
x.open('GET', 'pjx.php', false);
if (parseInt(NI) === 0) {
x.overrideMimeType('text/html;charset=iso-8859-15');
}
x.onreadystatechange = function (a) {
if (x.readyState == 4) {
if (x.status == 200) {
var p = SAF(x.responseText),
v = '';
var d = new Array();
d = p.split('|');
for (var i = 0; i < d.length; i++) {
var e = new Array();
e = d[i].split('*');
v += '<img src="http://www.monsite.com/img/' + e[0] + '"><div class="tr">' + e[1] + '</div><div class="res">' + e[2] + '</div>';
}
document.getElementById('ca').innerHTML = v;
} else {
XR(2);
return;
}
}
};
x.send(null);
} |
le script est caricatural , il manque bien sur des filtrages plus appropriés au texte et images (caractères spéciaux éventuels , il y a déjà un filtrage en amont , bien sur
qu'en pensez vous ?
bruno