Maison > cadre php > PensezPHP > Parlons des problèmes de vérification de sécurité de TP dans le processus de développement de l'interface de l'application

Parlons des problèmes de vérification de sécurité de TP dans le processus de développement de l'interface de l'application

藏色散人
Libérer: 2021-12-28 16:00:17
avant
2969 Les gens l'ont consulté

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 = &#39;dmm888&#39;;    
    public $appsecret = &#39;http://cnblogs.com/dmm888&#39;;
    
    public function index(){
        $this->show(&#39;<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>&#39;,&#39;utf-8&#39;);
    }
    public function  test(){
        if(!isset($_GET[&#39;token&#39;])){
            $this->apiReturn(4001,&#39;invalid token&#39;);
        }else if(!S($_GET[&#39;token&#39;])){            
            $this->apiReturn(4001,&#39;invalid token&#39;);
            
        }
 
        $data = array(
            &#39;id&#39;=>2,
            &#39;username&#39;=>&#39;明之暗夜&#39;,
            &#39;info&#39;=>array(&#39;age&#39;=>24,&#39;address&#39;=>&#39;学府路&#39;,&#39;url&#39;=>&#39;http://cnblogs.com/dmm888&#39;)
        );
        if($data){
            $this->apiReturn(200,&#39;读取用户信息成功&#39;,$data,xml);
        }
    }
    public function getToken(){
        $ori_str = S($this->appid.&#39;_&#39;.$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;
        //这里做了缓存 &#39;a&#39;=>b 和&#39;b&#39;=>a格式的缓存
        S($this->appid.&#39;_&#39;.$this->appsecret,$tmpStr,7200);  
        S($tmpStr,$this->appid.&#39;_&#39;.$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;
    }     
}
Copier après la connexion

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!

Étiquettes associées:
source:juejin.im
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal