Die folgende thinkphpFramework-Tutorial-Kolumne stellt Ihnen die Kommunikationssicherheitsauthentifizierungsprobleme von Thinkphp im Entwicklungsprozess der App-Schnittstelle vor. Ich hoffe, dass es für Freunde in Not hilfreich sein wird!
Wenn auf die von uns geschriebene Schnittstelle ohne Sicherheitszertifizierung direkt zugegriffen werden kann, stellt dies ein sehr großes Sicherheitsrisiko für unsere Website dar. Einige Hacker verwenden möglicherweise direkt Ihre Schnittstelle, um die Datenbank zu betreiben, und die Folgen sind unermesslich.
Wie können wir also eine effektive Sicherheitsüberprüfung durchführen?
Hier wird der access_token-Mechanismus in der WeChat-Entwicklung verwendet, der es dem App-Front-End-Entwicklungsingenieur ermöglicht, das Token durch Übermittlung der App-ID und des Appsecert zu erhalten. Der Server speichert das Token jedes Mal 7200 Sekunden lang im Cache , das Token wird jedes Mal wiederholt.
Daher wird empfohlen, dass der Client feststellen kann, ob das lokale Token vorhanden ist, und es direkt als Parameter verwenden kann API. Der Server bestimmt die Gültigkeit des Tokens und gibt ihn entsprechend zurück. Wenn das Token abläuft, ist es ungefähr so Methode, Sie können auch eine Nachricht hinterlassen
<?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; } }
Ich muss die spezifische Verifizierungsmethode nicht schreiben. Auf diese Weise müssen wir dem App-Front-End-Entwickler nur die App-ID und das App-Geheimnis mitteilen und ihm sagen, wie es zu verwenden ist Der Token ist der einzige Token und nur wenn der Token gültig ist, kann er nach unten ausgeführt werden, sodass die Sicherheit gewährleistet werden kann.
Empfohlenes Lernen: „Die neuesten 10 Thinkphp-Video-Tutorials“
Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Sicherheitsüberprüfungsprobleme von TP im Entwicklungsprozess der App-Schnittstelle sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!