西山和広です。

At Tue, 30 Sep 2008 19:25:19 +0900,
Shugo Maeda wrote:
> 
> 同じようなことですが、POP3Command#initializeでtimestampにマッチさせる
> 正規表現自体を以下のように変えてしまってはどうでしょうか。
> 
>    def initialize(sock)
>      @socket = sock
>      @error_occured = false
>      res = check_response(critical { recv_response() })
>      @apop_stamp = res.slice(/<[!-~]+@[!-~]+>/)
>    end
> 
> RFC1939によると、"The syntax of the timestamp corresponds to the
> `msg-id' in [RFC822]"とのことなので、(ちょっと正規表現が緩いですが)
> 問題ない気がします。

initializeを厳しくするのだと攻撃されている可能性があるということが
わかりにくいかと思って別メッセージの例外になる方がいいかと
思ったのですが、考え直してみると、APOPのはずなのに
#<Net::POPAuthenticationError: not APOP server; cannot login>
になるのは他の可能性も含めておかしいので、それで良さそうに思いました。


> 根本的な対策としては、ちゃんとした証明書でPOP over SSLを使うのがよい
> のでしょうね。

サーバ側も含めて対策できる場合ならそうするのが一番いいですね。


-- 
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)