a vale ya lo veo lo he estado mirando por encima lo que dices, se trataria de modificar los datos de entrada i solo dejar pasar ciertos caracteres humm creo que eso ya lo solucione mediante un filtro y un creador de bases :
--> para filtro en los caracteres puse esto --> if (preg_match("/^[
[email protected]]{3,50}$/", $_POST['value'])){$value=$_POST['value'];}else{exit();}
//que vendria a ser condicionsino alfanumerico @. i es mas pequeño de 3 o mas grande de 50 caracters entonces exit
->para creador de bases hice una funcion base en php donde pones:
base('0123456789abcdefghijklmnopqrstuvwxyzABCEDFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz','esteeselstringaencriptarHolagentedecristallabsoyarea51') -->(esto me retorna para guardar en la base de datos)->kjnvaiuwsfnweckcjnsdmflvbsoonffnxcvassdfdssfbdsadstyjelfncsmdjnsucfhuaiwecface
funciona como un encriptador lo que hago es cojer el texto en este caso una base62 ordenada(primerargumento de la funcion base) i pasarlo a decimal i luego de decimal lo paso a base26(segundo argumento dela funcionbase) queda como encriptado para hacer efecto blowfish simplemente luego le intercalo caracteres random. Cuando me refiero a blowfish quiere decir que cada vez que encriptas la misma cadena te retorna una cadena cadavez diferente. utilice blowfish. con blowfish en base64 puedes crear una aleatoriedad de 62⁶²=1.34x10¹¹¹ para la base62 y 26²⁶=6.15x10³⁶ mas la aleatoriedad de los caracteres random añadidos.
para ataques desde shell tengo -> if(!strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'gecko')){exit();}
es decir sino tiene el browser motor de renderizado gecko o similar (es decir no es un browser moderno gui) entonces exit sin embargo eso se puede emular desde php para curl -> CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
para eso meto mano de los logs generados por el modulo status de apache que viene siempre por defecto apartir de ahi mediante cat grep y awk si la misma ip tiene cierto numero de lineas en un intervalo de tiempo determinado entonces añadir ip a blacklist.txt -> de manera que en todos los php si ip se encuentra en blacklist entonces exit si la lista fuera muy grande tengo pensado ponerlo como directorio en particion xfs (que es ultrarapido) es decir directorio blacklist donde los ficheros tengan nombres de ip con peso 0 bytes y entonces si is_file($ip) -> exit;
De todas maneras me falta mucho que aprender en ese sentido lo ideal seria hacerlo https y los websockets para el chat en wss aun tengo que ponerme a ello ya que habia una manera gratuita de hacerlo