modxcms-jp / evolution-jp

https://modx.jp/
32 stars 25 forks source link

mysql/mysqliインクルードファイルに拡張子 #150

Closed Fiberalph closed 8 years ago

Fiberalph commented 8 years ago

http://wa3.i-3-i.info/word12025.html

yama commented 8 years ago

http://wa3.i-3-i.info/word12025.html

MODXの場合は過去に、直接実行されることを想定しないincファイルが原因で重大なセキュリティホールが発生したことがありました。他のオープンソースプロダクトもその懸念は同様で、たとえばDrupalはほとんどのincファイルの拡張子をincとすることで、単体で実行可能なファイルをできるだけ減らしています。オープンソースなので、中身がそのまま見えてしまっても問題ないという考え方ですね。 ・・・ですが、どちらでもよさそうに思います。

if(!defined('IN_MANAGER_MODE') || IN_MANAGER_MODE != 'true') exit();

直接実行を防ぐために、一行目に上記の記述を必ず挿入します。

soushi commented 8 years ago

これは結構悩ましい問題で僕も個人的な見解としては別にソースが表示されても「それが何か」という考え方なのですが、脆弱性試験を通すとソースが表示されるところは「要対応」の指摘事項として上がってきます。 「OSSですしソースが見える事によるリスクは特にない」との見解を示しても「試験結果して出た以上、対応しないといけない」「指摘事項として上がってると言う事は問題だという事だ」といった感じで対応しないと先に進まない事もあります…まぁ日本的という感じがしなくもないところです。 全部が全部そういう話だったわけではないですが、参考までに。

あとは…「Drupalでもそうやってるんですよ」ってのは一つの説得材料になる気がしました。世界的に有名な企業さんも使っているみたいですし。

Fiberalph commented 8 years ago

なるほど~ そういう意味だったんですね・・・ 拡張子に関してはエディタが言語を判断する為だけの措置でしたが セキュリティ上必要であればincファイルにしたほうが良いと考えられますし、

if(!defined('IN_MANAGER_MODE') || IN_MANAGER_MODE != 'true') exit();

で解决できるなら、良い気もしますし、他に方法があるような気もします(優柔不断でスミマセン)。

後は「決め」の問題かと・・・

yama commented 8 years ago

Drupalくらいの有名プロダクトになると検討側のほうが「何か理由がある?」と踏みとどまって考えてもらえることがあるかもしれませんね。 https://github.com/drupal/drupal/blob/8.0.x/.htaccess Drupalの場合はこのようにして直接参照を防いでます。.htaccessは設置者の都合で自由に編集する機会があるファイルなので少し脆いですが、「ちゃんと考えてるよ」という意思表示にはなりそうで、こういうのもいいんじゃないかな?という気がします。教科書どおりのセオリーではないですが、最先端のプロダクトならではの主張を感じます。 自分がやるとしたら、トップの.htaccessは現状のまま、managerフォルダ・assetsフォルダの.htaccessをこのようにします。

https://github.com/drupal/drupal 拡張子のことはあまり深い理由はないんですが、Drupalのファイル構成を隅々まで見てると美しいなー、、って思いますw