Вот что есть PHP: if (isset($_POST['email']) and isset($_POST['qtext']) and isset($_POST['code'])) { $email=trim($email); $qtext=trim($qtext); $email=htmlspecialchars($_POST['email']); $qtext=htmlspecialchars($_POST['qtext']); if(trim($_POST['code'])==$_SESSION['captcha']){ if(preg_match('|([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is', $email)){ if((strlen($qtext)<5000) and (strlen($qtext)>10)) { include_once('/msql.php'); include('/tools.php'); $ip=getIp(); $date=date('Y:m:d G:i:s'); $email=addslashes($email); $qtext=addslashes($qtext); if (mysql_query ("INSERT INTO questions (email,qtext,ip,date) VALUES('$email','$qtext','$ip','$date')")){ $err_con="Ваше сообщение отправлено администратору, он ответит в ближайшее время"; $qtext=''; $email=''; }else { echo "Ошибка! Повторите операцию позже."; } }else{ $err_con=$err_con.'<br>Длинна сообщения не должна быть больше 5000 символов и'; } }else{ $email=''; $err_con=$err_con.'<br>Ошибка ввода E-mail'; } }else{ $err_con=$err_con.'<br>Ошибка ввода проверочного кода'; } } Опишите ваше мнение по поводу езопасности кода. (уязвимости)
PHP: (isset($_POST['email']) and isset($_POST['qtext']) and isset($_POST['code'])) { Меняеться на: PHP: (isset($_POST['email'], $_POST['qtext'], $_POST['code'])) { PHP: if(preg_match('|([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is', $email)){ Меняеться на http://php.net/manual/en/function.filter-var.php, с опциией ваидации мыла. PHP: $email=addslashes($email); $qtext=addslashes($qtext); Надо сменить на mysql_real_escape_string, или юзать mysqli. Фильтровать html теги надо при выводе, а не вводе. PHP: $email=htmlspecialchars($_POST['email']); $qtext=htmlspecialchars($_POST['qtext']); Нет приведения типов, а это раскрытие путей, если вкл. отображение ошибок. Я бы написал так: PHP: include_once('/msql.php'); include('/tools.php'); if (!isset($_POST['email'], $_POST['qtext'], isset($_POST['code'])) exit; //Приводим в порядок переменые $email=(string)$_POST['email']; $qtext=(string)$_POST['qtext']; $email=trim($email); $qtext=trim($qtext); //trim переносы строк сьест..(вроде) $err_con = ''; if(!trim((string)$_POST['code']) == $_SESSION['captcha']) //Чекаем код... $err_con = $err_con.'<br>Ошибка ввода проверочного кода'; if(!filter_var($email, FILTER_VALIDATE_EMAIL)) //Проверяем мыло на валидность $err_con=$err_con.'<br>Ошибка ввода E-mail'; $qlen = strlen($qtext); //Дабы не дергать str_len 2 раза if (!(($qlen <5000) && ($qlen > 10))) $err_con = $err_con.'<br>Длинна сообщения не должна быть больше 5000 символов и'; if (!$err_con) { //если не было ошибок... $ip = getIp(); $date = date('Y:m:d G:i:s'); $email = mysql_real_escape_string($email); $qtext = mysql_real_escape_string($qtext); $sql_q = "INSERT INTO questions (email,qtext,ip,date) VALUES('$email','$qtext','$ip','$date')"; if (mysql_query ($sql_q)){ $err_con="Ваше сообщение отправлено администратору, он ответит в ближайшее время" else echo "Ошибка! Повторите операцию позже."; } else echo $err_con;