備忘録のような

趣味グラマによる個人的な見解、備忘

Wappalyzerからphpたそを隠す方法

他人のサイトのサービスを解析してニヤニヤしてる人(自分)が愛用しているであろう


Wappalyzer


からPHPを隠せたので錯誤した手順を示す(訳:忘れた時用のメモ)


はい


まず最初に、githubにあるWappalyzerのソースコードプログラミング言語や、CMSフレームワークなどの識別の条件がかかれている

また、PHPを検出する際の識別条件は、以下のような感じである

		"PHP": {
			"cats": [
				27
			],
			"headers": {
				"Server": "php/?([\\d.]+)?\\;confidence:40\\;version:\\1",
				"Set-Cookie": "PHPSESSID",
				"X-Powered-By": "php/?([\\d.]+)?\\;confidence:40\\;version:\\1"
			},
			"icon": "PHP.png",
			"url": "\\.php(?:$|\\?)",
			"website": "php.net"
		}

他の条件は、下記のURLから探してください(ね)
github.com


とまあこのような条件なのですがお詳しい方ならこの条件を見てすぐに対策できると思いますのでシェアして右上にある読者になるボタンをクリックしましょう(威圧 震え声 強制)

やっと本題、

識別する上で必要な条件を抜粋

まずヘッダ情報で、
Serverが php なんちゃら~ version~ なら、
Set-Cookieが PHPSESSID なら、
X-Powered-Byが php なんちゃら~ version~ なら、
またそれらの条件をクリアしつつ、urlの末尾に .php をつけた場合に返される(表示される)か、
という条件らしいです(ちゃんと検証したわけではないのでミスあっても仕様だ)

では、これらの条件をくぐり抜ける手段をかくよ(やっと本題と書いているがここからが本題)



最初にserverの奴~
これは、Apacheとか、nginx使っていれば??多分大丈夫、一応ヘッダの確認をしておきましょうね~

次、
PHPSESSIDの書き換え
php.iniに
session.name = "SESSID"
session.cookie_httponly = 1

X-Powered-Byは、
非表示する場合
php.iniに
expose_php = Off
書き換える場合は、
phpに、
header('X-Powered-By: Secret');
めんどくさいので設定ファイルでも作ってrequireしてあげるとよさげ
詳しくは、Qiita参照
PHPのX-Powered-Byヘッダを送らないようにする方法 - Qiita

最後にこれも重要だと思う.phpの対策
.htaccessに以下ようなのコードを追加してください

#この1行はさくらでなければ必要ない場合もある鯖による
<IfModule mod_rewrite.c>
#これも
RewriteEngine on

#  hoge.com/index.phpを hoge.com/main にする
RewriteRule ^main$ index.php

#最初の1行が必要ない場合これも消す
</IfModule>


こうすることで、hoge.com/mainでindex.phpを表示できますそれでいて、mainに .phpを付け足しても存在していなく返されませんのでphpか見分けられなくなります(完璧にではないが)


こんな感じのことをしてやると、phpか識別できなくなると思います
一応自分の環境ではできました

できなかったらごめんなさい
それとだんだん文章が雑になっています()

また、php以外でも似たようにやればフレームワークを検出できなくできます
でもどんなにやったって詳しい方ならフレームワークレベルなら多分大体の場合は簡単にわかりますので
気持ち程度に、それとフレームワークCMSプログラミング言語開発者しゃんに悪いのでできれば隠さない方がいいかもですね(僕は人間ができてないので基本かくしますが)
以上にわか趣味グラマでした