[▲前のスレッド]

2235. エンティティ対応(要望) 
T.Akiba [URL] 2003/8/14 (木) 13:22:47
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
cyclamen使わせていただいています。
要望がありますので、ご検討いただければ幸いです。
(もちろん、大幅変更が必要でしたら無視で結構です)

メールアドレスが入力されていた場合、記事表示時にリンクされますが、
そのときにHTML記述を
"@"→"@"
"."→"."
のように差し替えられないでしょうか?
(元データはそのままで、表示時のみ変換)

これができれば、spamにかかりにくくなるかと思いますので。

よろしくお願いします。


2236. Re:エンティティ対応(要望) 
あけび(管理者) 2003/8/14 (木) 14:36:08
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)
配布版では未対応ですが、このサポートBBSでは、

cyclamen.cgi中
if($email) { $name = "<a href=\"mailto:$email\">$name</a>";}

if($email) { $name = sprintf("<a href='JavaScript:void(0)' onClick='mt(%s)' target='_self'>%s</a>",&c_enc("mailto:$email"),$name);}
に変更


$COOKIE{'nf'} || print "<base target=CY_INDEX>\n";
の後ろに
print <<__JS__;
<script language="JavaScript">
<!--
function mt(args) {
        var s='';
        for(i=0;i<mt.arguments.length;i++){
                s+=String.fromCharCode(mt.arguments[i]);
        }
        location.href=s;
}
//-->
</script>
__JS__
を追加


__END__
の前に
sub c_enc {
        local($s) = @_;
        $s =~ s/(.)/ord($1).","/eg; chop($s);
        $s;
}
を追加


という方法を使って、mailto:を含めて、メールアドレスの文字列はキャラクターコードに変換して書き出すようにしています。
'@'や'.'のみを文字参照に変換するよりは有効かと思います。


2237. Re2:エンティティ対応(要望) 
T.Akiba [URL] 2003/8/14 (木) 17:30:04
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
▼ あけび(管理者)さん
早速ありがとうございます。
既に全文字変換されていたとは驚きました。

追加ですみません。
ご提示いただいたものをJavaScriptなしで実行することは可能でしょうか?
素人考えでは、以下のような感じかと思うのですが…

要するに、全て"&#???;"に変換したいのです。

----

cyclamen.cgi中
if($email) { $name = "<a href=\"mailto:$email\">$name</a>";}

if($email) { $name = sprintf("<a href=\"%s\">$name</a>",&c_enc("mailto:$email");}
に変更


__END__
の前に
sub c_enc {
        local($s) = @_;
        $s =~ s/(.)/"&#".ord($1).";"/eg; chop($s);
        $s;
}
を追加


2238. Re3:エンティティ対応(要望) 
あけび(管理者) 2003/8/14 (木) 18:26:57
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)
if($email) { $name = "<a href=\"mailto:$email\">$name</a>";}

if($email) { $stmp = "mailto:$email"; $stmp =~ s/(.)/'&#'.ord($1).';'/eg; $name = "<a href=\"$stmp\">$name</a>";}
に変更するだけで対応できますけど、この程度のメジャーな方法で効果があるかは疑問です。
仮に私がメールアドレス収集ソフトを作る立場だとしたら、文字参照のデコードは真っ先に考えますし。


2239. Re4:エンティティ対応(要望) 
T.Akiba [URL] 2003/8/14 (木) 21:31:15
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
▼ あけび(管理者)さん
またまたありがとうございます。

早速利用させていただきます。
と思ったら、メールアドレスに"_"があると、&#95;に化けてしまうようです。
元データが&#95;だからだと思いますが…

----

> 仮に私がメールアドレス収集ソフトを作る立場だとしたら、文字参照のデコードは真っ先に考えますし。

まぁspam屋さんはそこまでやらないんじゃないかと淡い期待してます (^_^;)


[▼次のスレッド]
INCM/CMT
Cyclamen v3.84.01
[ut:0.008][st:0.000]