avatar

tetsai

原创声明

本文由tetsai原创,转载请注明来源

使用http协议自带的登陆验证

好处是不需要设计登陆界面,无html,无js,无css,纯属协议层的交互,对api接口友好,坏处是容易被扫描爆破。

如何实现basic authorization?

相关代码:

<?php session_start(); ?>
<?php
$users_global=array('tetsai'=>'xxxxxxx');
if($users_part)
	$users=array_merge($users_part,$users_global);
else
	$users=$users_global;
$auth=explode(' ', $_SERVER['HTTP_AUTHORIZATION']);
if($auth[0]=='Basic'){
	$auth=explode(':',base64_decode($auth[1]));
	$_SESSION['auth_user']=$auth[0];
	$_SESSION['auth_pass']=$auth[1];
}
if($_SESSION['auth_user']=='' || 
$_SESSION['auth_pass']!=$users[$_SESSION['auth_user']]){
	header('HTTP/1.0 401 Authorization Required');
	header('www-Authenticate: Basic realm= "backdoor"');
	header('Content-Type: text/html; charset=UTF-8');
	echo '<h1>illegal access</h1>';
	die();
}
?>

利用session,只需要验证一次basic authorization 就可以了,把它保存成xxxx.php文件,需要保护的php直接加

<?php
$users_part=array('guest'=>'xxxxxx');
include 'xxxx.php';
?>

其中$users_global 为全局用户(相当于root用户,万能**,到哪里都可以用此用户登陆),$users_part 是局部用户,仅限当前受保护的php登录,比如你需要分享用户名**,但同时又因为用户名**跟后台有关系,就可以设置一个局部用户。

单用户:

array('这里是用户名'=>'这里是对应的**');

多用户:

array('这里是用户名'=>'这里是对应的**','这里是用户名'=>'这里是对应的**','这里是用户名'=>'这里是对应的**','这里是用户名'=>'这里是对应的**',...);

就可以了。

效果如下:

因为是https,所以本身这种**传输即使是明文,也是加密的,可以放心使用。

发表评论

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