La colonne suivante du didacticiel thinkphpframework vous présentera les problèmes d'authentification de sécurité des communications de Thinkphp dans le processus de développement de l'interface de l'application. J'espère qu'elle sera utile aux amis dans le besoin !
Si l'interface que nous avons écrite est accessible directement sans certification de sécurité, cela entraînera un risque de sécurité très important pour notre site Web. Certains pirates informatiques peuvent utiliser directement votre interface pour faire fonctionner la base de données, et les conséquences sont incommensurables.
Alors, comment pouvons-nous effectuer une vérification de sécurité efficace ?
Le mécanisme access_token dans le développement WeChat est utilisé ici, permettant à l'ingénieur de développement front-end de l'application d'obtenir le jeton en soumettant l'appid et l'appsecert. Le serveur met en cache le jeton pendant 7 200 secondes si le client demande directement le jeton à chaque fois. , le jeton sera répété à chaque fois.Paramètre ;
Par conséquent, il est recommandé que le client puisse également déterminer si le jeton local existe, il peut directement utiliser le jeton comme paramètre pour accéder à notre. api. Le serveur détermine la validité du jeton et renvoie en conséquence. Si le jeton mis en cache par le client n'est pas valide, il suffit de demander à nouveau le jeton. L'idée est à peu près la suivante. Le code de référence complet est fourni ci-dessous. meilleure méthode, vous pouvez également laisser un message
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public $appid = 'dmm888'; public $appsecret = 'http://cnblogs.com/dmm888'; public function index(){ $this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;font-size:24px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>!</p><br/>[ 您现在访问的是Home模块的Index控制器 ]</div><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8'); } public function test(){ if(!isset($_GET['token'])){ $this->apiReturn(4001,'invalid token'); }else if(!S($_GET['token'])){ $this->apiReturn(4001,'invalid token'); } $data = array( 'id'=>2, 'username'=>'明之暗夜', 'info'=>array('age'=>24,'address'=>'学府路','url'=>'http://cnblogs.com/dmm888') ); if($data){ $this->apiReturn(200,'读取用户信息成功',$data,xml); } } public function getToken(){ $ori_str = S($this->appid.'_'.$this->appsecret); //这里appid和appsecret我写固定了,实际是通过客户端获取 所以这里我们可以做很多 比如判断appid和appsecret有效性等 if($ori_str){ //重新获取就把以前的token删除 S($ori_str,null); } //这里是token产生的机制 您也可以自己定义 $nonce = $this->createNoncestr(32); $tmpArr = array($nonce,$this->appid,$this->appsecret); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); // echo $tmpStr; //这里做了缓存 'a'=>b 和'b'=>a格式的缓存 S($this->appid.'_'.$this->appsecret,$tmpStr,7200); S($tmpStr,$this->appid.'_'.$this->appsecret,7200); } /** * 作用:产生随机字符串,不长于32位 */ function createNoncestr( $length = 32 ) { $chars = "abcdefghijklmnopqrstuvwxyz0123456789"; $str =""; for ( $i = 0; $i < $length; $i++ ) { $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1); } return $str; } }
Je n'ai pas besoin d'écrire la méthode de vérification spécifique. Eh bien, de cette façon, il nous suffit de donner l'appid et l'appsecret au développeur front-end de l'application et de lui dire comment procéder. utilisez-le. Le jeton est le seul jeton et ce n'est que lorsque le jeton est valide qu'il peut être exécuté vers le bas, afin que la sécurité puisse être garantie.
Apprentissage recommandé : "Les 10 derniers didacticiels vidéo thinkphp"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!