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,所以本身这种**传输即使是明文,也是加密的,可以放心使用。

发表评论

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