ホームページ > バックエンド開発 > PHPチュートリアル > dz プラグインの開発時にバックグラウンドでエラー プロンプトが表示される

dz プラグインの開発時にバックグラウンドでエラー プロンプトが表示される

WBOY
リリース: 2016-06-23 13:49:43
オリジナル
1423 人が閲覧しました

これは PHP コードです

<?phpif(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {	exit('Access Denied');}			include template('baoming:fabu');	if($_GET['a'] == 'post'){		if($_GET['submit'] && submitcheck('formhash'))	{		$arr=array();		$arr['name']=trim($_GET['name']);		$arr['jj']=$_GET['jj'];				if($arr['name']=='') showmessage('名称不能为空');		if($arr['jj']=='') showmessage('简介不能为空');						$arr = daddslashes($arr);				$id=DB::insert('bm_post',$arr,true);if($id>0){showmessage('添加失败');}else{showmessage('添加失败');}			}}?>
ログイン後にコピー

テンプレート
<form id="form" name="form" method="post" action="plugin.php?id=baoming:fabu&a=post" enctype="multipart/form-data"><table width="100%" border="0" cellpadding="0" cellspacing="0" class="a1" style="margin-top:15px;">  <tr>    <td width="10"> </td>    <td width="100">名称:</td>    <td><input name="name" id="name" type="text" size="50" /></td>  </tr>    <tr>      <td> </td>      <td>简介:</td>      <td>        <label></label>       <label>          <textarea name="jj" cols="60" rows="4"></textarea>      </label></td>    </tr>    <tr>    <td> </td>    <td> </td>    <td><label>      <input type="submit" name="submit" style="height:25px;" value="提交"  />              <input type="reset" name="submit2" style="height:25px;" value="重写" />      </label></td>  </tr></table><input type="hidden" name="formhash" value="{FORMHASH}" /></form>
ログイン後にコピー

エラー メッセージ
ディスカッ! システム エラー

現在のアクセス要求には不正な文字が含まれているため、システムによって拒否されました
PHP デバッグ

[Line: 0025]admin.php(discuz_application - >init)
[Line: 0071]sourceclassdiscuzdiscuz_application.php(discuz_application->_init_misc)
[Line: 0552]sourceclassdiscuzdiscuz_application.php(discuz_application->_xss_check)
[Line: 0355]sourceclassdiscuzdis application.php(system_error)
[Line: 0023]sourcefunctionfunction_core.php(discuz_error::system_error)
[Line: 0024]sourceclassdiscuzdiscuz_error.php(discuz_error::debug_backtrace)


ディスカッション (解決策) への返信

取得した $_SERVER['REQUEST_URI']
には、特殊文字 <、"、CONTENT-TRANSFER-ENCODING が含まれている必要があります

送信後、PHP ページから取得した $_SERVER['REQUEST_URI'] を投稿してください
そこに特殊文字、<、"、CONTENT-TRANSFER-ENCODING にする必要があります



空のフォームで送信するときにもこのプロンプトが表示されます

これを明確に説明することはできません。$_SERVER の値を確認することしかできません。 ['REQUEST_URI']
エラーをスローします。場所はsourceclassdiscuzdiscuz_application.phpにあり、_xss_check()のプライベートメソッドがあります。自分で見てください

$_SERVER['REQUEST_URI'] この値

/admin.php ?action=plugins&operation=config&do=23&identifier=baoming&pmod =fabu

フォーム"method="post" action="plugin.php? id=baoming:fabu&a=post" e

は問題ありません。 ?





私はそうですか?チェックしたところ、ここにあるものはすべて正しいです


受け入れられたというフォームハッシュの送信にエラーがあるようです

それは本来の_xss_check()メソッドがフォームハッシュを検証することなので、フォームハッシュの問題です

private function _xss_check() {		$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));		if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp, 'CONTENT-TRANSFER-ENCODING') !== false) {			system_error('request_tainting');		}		return true;	}
ログイン後にコピー

、X2.5 の _xss_check() メソッドを試してみましょう

フロントデスクでフォームハッシュを検証する必要があります、どうすれば通過できますか、バックグラウンドに到達すると機能しません

うーん...私の能力は限られているので、勉強したことがなく、これまで遭遇したこともありません

さらに、discuz によって報告されたエラーによると、X2.5 _xss_check() コードの discuz_application.php の _init_misc メソッドでの実行が見つかりませんでした。

お使いのバージョンがわかりません

それより低いバージョンの場合は、discuz_application.php ファイルを上書きしてみてください

こんにちは!私は 3.2 を使っています

とにかく、ポイントをくれた jam00 さん、本当にありがとう

たぶん、私はこのようなハイエンドバージョンをプレイしたことがないと思います...降りてきて見てみました、それは本当に存在します、見せてください見てください...

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート