Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite,
Eis me aqui com mais um problema que eu não consegui resolver.
Tenho um formulário de login que o mod_security entende como inseguro e não deixa realizar o login. Eu não sou programador e as gambiarras que tentei fazer não deram certo.
Alguém poderia me ajudar a modificar o código de forma funcional?
Desde já agradeço,
Marcos Paulo.
<?
$page = "login";
include "header.php";
// USER IS LOGGED IN, FORWARD TO USER HOME
if($user->user_exists != 0) { header("Location: user_home.php"); exit(); }
if(isset($_POST['task'])) { $task = $_POST['task']; } else { $task = "main"; }
// CHECK FOR REDIRECTION URL
if(isset($_POST['return_url'])) { $return_url = $_POST['return_url']; } elseif(isset($_GET['return_url'])) { $return_url = $_GET['return_url']; } else { $return_url = ""; }
$return_url = urldecode($return_url);
$return_url = str_replace("&", "&", $return_url);
if($return_url == "") { $return_url = "user_home.php"; }
// INITIALIZE ERROR VARS
$is_error = 0;
$error_message = "";
// GET EMAIL
if(isset($_POST['email'])) { $email = $_POST['email']; } elseif(isset($_GET['email'])) { $email = $_GET['email']; } else { $email = ""; }
// TRY TO LOGIN
if($task == "dologin") {
$user->user_login($email, $_POST['password'], $_POST['javascript_disabled'], $_POST['persistent']);
// IF USER IS LOGGED IN SUCCESSFULLY, FORWARD THEM TO SPECIFIED URL
if($user->is_error == 0) {
// INSERT ACTION
$actions->actions_add($user, "login", Array('[username]'), Array($user->user_info[user_username]));
cheader("$return_url");
exit();
// IF THERE WAS AN ERROR, SET ERROR MESSAGE
} else {
$error_message = $user->error_message;
$user = new se_user();
}
}
// ASSIGN VARIABLES AND INCLUDE FOOTER
$smarty->assign('email', $email);
$smarty->assign('error_message', $error_message);
$smarty->assign('return_url', $return_url);
include "footer.php";
?>addslashes() e/ou mysql_real_scape_string().
Trate as informações vindas do formulário com essas funções.
Bom dia amigos,
Vejam abaixo a comunicação com o provedor de hospedagem:
>
Resposta:
Boa noite. Constatamos que o problema está ocorrendo devido a alguns filtros de segurança do servidor (mod security), a forma que sua programação foi elaborada é passível de ataques do tipo "blind sql injection" (mensagem de erro: ""Blind SQL Injection Attack. Matched signature "]). Isso pode permitir que visitantes mal intencionados façam consultas ao seu banco de dados de forma ilegítima através de informações enviadas nos campos "usuário" e "senha". Normalmente isso pode ser solucionado modificando para que ela fique mais consistente e não permita esse tipo de falha. Estamos enviando abaixo o log de erro do "mod security" gerado no momento do problema, apenas para sua referência:
URL: /comunidade/user_home.php
Access denied with code 406 (phase 2). Pattern match "\b(? : ( ?: s(?:ys(?: ( ?: ( ?:process|tabl)e|filegroup|object)s|c(? : o (?:nstraint|lumn)s|at)|dba|ibm)|ubstr(?:ing)?)|user_(? : ( ? : ( ?:constrain|objec)t|tab(?:_column|le)|ind_column|user)s|password|group)|a(?:tt(?:rel|typ)id|ll_objects)|object_(? : ( ?:nam|typ)e|id)| ..." at REQUEST_HEADERS:Cookie. [file "/usr/local/apache/conf/modsec2.user.conf"] [line "67"] [id "950904"] [msg "Blind SQL Injection Attack. Matched signature "] [severity "CRITICAL"]
Isto foi quando eu ainda estava testando o sistema numa subpasta.
Marcos Paulo.