Authentication 登录功能在子域上工作,但在主域上不工作
我怎么可能有一个脚本和一个登录函数在子域上工作,而另一个却没有?使用相同的MySQL数据库用户名和密码。相同的代码不起作用Authentication 登录功能在子域上工作,但在主域上不工作,authentication,csrf,login-script,Authentication,Csrf,Login Script,我怎么可能有一个脚本和一个登录函数在子域上工作,而另一个却没有?使用相同的MySQL数据库用户名和密码。相同的代码不起作用 if(isset($_POST['Login'])) { try { // Run CSRF check, on POST data, in exception mode, for 10 minutes, in one-time mode. NoCSRF::check( 'csrf_t
if(isset($_POST['Login'])) {
try
{
// Run CSRF check, on POST data, in exception mode, for 10 minutes, in one-time mode.
NoCSRF::check( 'csrf_token', $_POST, true, 60*10, false );
$gump = new GUMP();
$_POST = $gump->sanitize($_POST); // You don't have to sanitize, but it's safest to do so.
$is_valid = GUMP::is_valid($_POST, array(
'entry' => 'required',
'password' => 'required'
));
if($is_valid === true) {
login($db , $_POST['entry'] ,$_POST['password'] );
}else{
$_SESSION['Error'] = $is_valid; // set error messages
header("location:".$_SERVER['PHP_SELF']); // redirect to php self
exit;
}
}
catch ( Exception $e )
{
// CSRF attack detected
$result[] = 'Session expired form ignored try again .'; //$e->getMessage() . ' Form ignored.';
$_SESSION['Error'] = $result; // set error messages
header("location:".$_SERVER['PHP_SELF']); // redirect to php self
exit;
}
}
function login($db , $entry , $password) {
//session_destroy();
$entry = (string)$entry;
$password = (string)$password;
/* $db->select($table , $columns , $where ) */
$datas = $db->select("user", [
"user_id",
"username",
"email"
], [
"AND"=>[
"OR" => [
"username" => "$entry",
"email" => "$entry"
],
"password"=>md5("$password"),
"status" => '1',
"verify_status" => '1',
]
]);
$error = $db->error(); // error
if(empty($error[2])) { // if error empty
if(is_array($datas) && count($datas) > 0) { // if select return result
extract($datas[0]);
$_SESSION['user_id'] = $user_id;
$_SESSION['user_name'] = $username;
$_SESSION['user_email'] = $email;
$_SESSION['user_is_logged'] = TRUE;
$_SESSION['Success'][] = "Successfully Logged In :)"; // set error messages
header("location:".BASE_URL); // redirect to php self
exit;
}else { // else invalid attempt
$_SESSION['Error'][] = "Invalid Credentials or you may not verified."; // set error messages
header("location:".$_SERVER['PHP_SELF']); // redirect to php self
exit;
}
}else {
$_SESSION['Error'][] = "Error on query.."; // set error messages
header("location:".$_SERVER['PHP_SELF']); // redirect to php self
exit;
}
}
因此,当我将代码带到服务器上时,catch块会激活,就像检测到CSRF攻击一样。到底发生了什么事`
NoCSRF和Gump是相同的。常数是一样的。htaccess是相同的除非gump正在使用SQL,否则这里您很容易受到SQL注入的攻击,如果我的用户名是,例如
;删除表用户--代码>是的,好的,我们需要逃避这一切。但是它是如何进入catch块的,而不是在测试站点上是另一个问题打印整个异常和堆栈跟踪,然后发布到这里,我们所知道的是有东西抛出了一个异常,我们不确定它是由您使用的任何库或框架抛出的CSRF异常,这似乎并没有在代码中显示太多。感谢您的帮助。这是您的错误日志,我们需要堆栈跟踪,print$e->getraceastring(),除非gump正在使用SQL,否则您在这里很容易受到SQL注入的攻击,如果我的用户名是,例如;删除表用户--代码>是的,好的,我们需要逃避这一切。但是它是如何进入catch块的,而不是在测试站点上是另一个问题打印整个异常和堆栈跟踪,然后发布到这里,我们所知道的是有东西抛出了一个异常,我们不确定它是由您使用的任何库或框架抛出的CSRF异常,这似乎并没有在代码中显示太多。感谢您的帮助。这是您的错误日志,我们需要堆栈跟踪,print$e->getraceastring()