🙂

サイトがLaravelで作られているか特定する方法

2023/06/20に公開

結論

PHP向けWebアプリケーションフレームワークLaravelでサイトが作られているか判断するには、Cookieとしてセットされるそれぞれの項目の値の先頭に eyJpdiI6I があるか、あればLaravelでできているとわかる。

なぜか

たとえば、セッションIDが

eyJpdiI6Im91STU5ZWMrY1NBYTFKaUczb3I4U0E9PSIsInZhbHVlIjoiOTd4ZnNweGFNbW9rZXJaTzVoeGhadzFWM0RFa3pTTUR1aG5qaFp4QVFMMTlvWFd0cXV1TUYxZDlSeUlqdHBjRFU3SVNzKzJiQ2gxakZuMFRENWRUV2JtMWpCUUZaUlZidmVtN25SUlNTR3NKYit6ZC9YOVMxdHgxSElhTVZTV2siLCJtYWMiOiIwN2I2OGE4ZjUyNjgyZDgwZDFmZWJkMDdjZmNhMGQ3MDg0MzI0MmEyNzY4YTkyNTYyOWUwY2ZmMmZhZTE1MGVmIiwidGFnIjoiIn0

だったとする。

これをBASE64デコードすると、

{
  "iv": "ouI59ec+cSAa1JiG3or8SA==",
  "value": "97xfspxaMmokerZO5hxhZw1V3DEkzSMDuhnjhZxAQL19oXWtquuMF1d9RyIjtpcDU7ISs+2bCh1jFn0TD5dTWbm1jBQFZRVbvem7nRRSSGsJb+zd/X9S1tx1HIaMVSWk",
  "mac": "07b68a8f52682d80d1febd07cfca0d70843242a2768a925629e0cff2fae150ef",
  "tag": ""
}

という、いかにも暗号化していますよという感じの文字列になる。
このうち、先頭の {"iv":" は固定文字列で、BASE64エンコードすると eyJpdiI6I が必ずプレフィックスとなる。

LaravelのセッションIDの生成などに使われているEncrypterはこのような法則になっているため。

おしまい。

Discussion