We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 28073
    • 164 Posts
    アクセス解析ツールのSlimStatをインストールしたときに気付いたのですが、MODxの/index.phpにて環境変数のHTTP_REFERERとHTTP_USER_AGENTから特定の文字以外を削除しているコードがありました。

    // secure variables from outside
    // added 03-05-06
    foreach(array('HTTP_REFERER','HTTP_USER_AGENT') as $outside) {
      $_SERVER[$outside] = isset($_SERVER[$outside]) ? preg_replace("/[^A-Za-z0-9_\-\,\.\/\s]/", "", $_SERVER[$outside]): '';
    }
    


    で、この状態だとSlimStatでアクセス解析したときにHTTP_REFERERがうまく解析できず、Referring Domainが拾えなくなってしまいます。
    (特に確認はしてませんが同様にSearch Stringも拾えないと思います)
    そこでこのコードを次のように変えています。
    記号の「?、=、%、&、:」を削除させないようにしました。

    // secure variables from outside
    // added 03-05-06
    foreach(array('HTTP_REFERER','HTTP_USER_AGENT') as $outside) {
      $_SERVER[$outside] = isset($_SERVER[$outside]) ? preg_replace("/[^A-Za-z0-9_\-\,\.\/\s\?=%&:]/", "", $_SERVER[$outside]): '';
    }
    


    これでReferring Domainも拾えるようになっているのですが、このコードのコメントに書いている「secure variables from outside」と言うのが気になります。
    しかも変更された日付が比較的新しいので、何か意図があってコードを追加したのだとは思いますがご存知の方はいますでしょうか?
    (このコードのせいでMODx標準のアクセス解析もうまく動いてないような気も… huh一応、MODx標準のアクセス解析はOFFにしてしまいました)

    それにしてもSlimStatはすごいですね。
    かなり細かく解析してくれて驚きです grin
    • xreaを利用している関係で、僕も標準のアクセス解析機能を切ってslimstatを導入してます。
      だけど導入しっぱなしで、そんな問題があるとはつゆ知らずでした。さっそく適用してみます。

      で、その「secure variables from outside」ですけど。

      http://modxcms.com/forums/index.php/topic,4895.0.html
      http://modxcms.com/forums/index.php/topic,2382.0.html

      これ、何か関係ありそうですか?前者のはわりと最近の話ですね。
      何か書いてあるぞと思いつつ…今日はこれにて失礼しますzzz
        • 33488
        • 429 Posts
        ご報告ありがとうございます。
        ちょうど、アップデートした後からなぜか参照元がと悩んでました。
        これが原因だったんですねぇ
        よからぬREFFERのデータで訪問者履歴の表示時や他の解析スクリプトでの表示時に問題が発生しないように、有効な文字のみを渡すという意図かと思います。
          • 28073
          • 164 Posts
          返答ありがとございます smiley
          やはり変なコードをスニペットやプラグインに渡さないようにですよね…。
          あとで調べたらスニペットの実行等でphpのevalコマンドを使っていたので「;」や「|」をはじかないと、かなり危険な感じなのはわかりました。
          ただ、別の記号「:」「?」「=」等も軒並みはじかれていて、特定のスニペットやプラグインの動作に影響が出るのは困ったものですね…。
          (yamaさんの教えてくれたリンク先でも許可する記号を追加されてましたね)

          もう少し危険な記号と問題のない記号を精査してMODx側ではじいてもらうといいのかもしれません cool
          僕の中では自分で追加した記号は特に問題ないかなぁとは思ってるですが、実際はどうなのかは詳しくわからないため、色んな意見を聞きたいです。
          逆に危ないのは「;」「|」で、気をつける必要があるのは「’」「"」「$」あたりですかね…。

          他のCMSがどんなルールにしているのかも気になります shocked