php401验证

  • 内容
  • 评论
  • 相关

很多人可能很少使用php的验证,很多使用我们可以这样来使用这个验证:

define('ADMIN_USERNAME','uname'); 	// Admin Username
define('ADMIN_PASSWORD','passwd');  	// Admin Password
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
           $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME ||$_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) {
			Header("WWW-Authenticate: Basic realm=\"Memcache Login\"");
			Header("HTTP/1.0 401 Unauthorized");
                        
			echo <<<EOB
				<html><body>
				<h1>Rejected!</h1>
				<big>Wrong Username or Password!</big>
				</body></html>
EOB;
			exit;
}

这里我们通过发送header信息来进行验证,其中这个$_SERVER['PHP_AUTH_USER']东西如果不可用打开php.ini中的Register Globals,将其设为on,在php5以后默认设为off,因为打开其实不安全。官网给出一个例子:

<?php
// 当用户合法的时候,赋值 $authorized = true
if (authenticated_user()) {
    $authorized = true;
}

// 由于并没有事先把 $authorized 初始化为 false,
// 当 register_globals 打开时,可能通过GET auth.php?authorized=1 来定义该变量值
// 所以任何人都可以绕过身份验证
if ($authorized) {
    include "/highly/sensitive/data.php";
}
?>

评论

0条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注