我一直在阅读电子邮件混淆。PHP + CSS Obfuscation - PHP ord THEN PHP strrev + CSS反向文本,如何获得特殊字符验证向后?
我发现了一篇名为Best Method for Email Obfuscation? - By Jeff Starr的有趣文章,他描述了SilvanMühlemann在1.5年前进行的各种测试。
根据这项研究,尽管存在各种缺点,但在1.5年的测试中,css obfustication仍然100%有效。
看到我在玩这种笨拙的方法之前,我决定再给它一次,增加一个我过来的php函数。
下面是函数:
// Converts email and tel into html special characters
function convert_email_adr($email)
{
$pieces = str_split(trim($email));
$new_mail = '';
foreach ($pieces as $val)
{
$new_mail .= '&#'.ord($val).';';
}
return $new_mail;
}
这里是使用该功能的PHP。
$lstEmail = convert_email_adr("{$row['email']}");
这不正是所描述的,我也认为这会工作得非常好,假设收割机没有写识别特殊字符的字符串和解码他们的代码。
所以我决定,如果我将这两种方法结合起来,如在,我打破串入特殊字符,然后用它strrev,然后用css来扭转串...简单...
这里是PHP的补充peice的是反转的实际字符串作为页面的源代码看出:
$lstEmail = strrev($lstEmail);
和CSS来再次扭转它在客户端:
span.obfuscate { unicode-bidi:bidi-override; direction: rtl; }
和HTML:
<p><span class='listHeadings'>eMail:</span> <span class='obfuscate' style='font-size:0.6em;'><a href='mailto: $lstEmail?subject=Testing 123'>$lstEmail</a></span></p>
但问题是,串现在在反向而无法通过验证...下面是一个例子:
; 901#&; 111#&; 99#&; 64#&; 801#&; 501#&; 79#&; 901#&; 301#&; 46#&; 411#&; 101#&; 001#&; 011#&; 111#&; 611#&; 011#&; 79#&; 811#&; 301#&; 501#&; 79#&; 411#&; 99#&
会发生什么情况是特殊字符不会被解码为实际字符,所以您只能看到特殊字符串的反向。
还有一个缺点,如Jeff Starr所述,您无法使用mailto
中的css方法,因为您无法在href
属性中使用span标记。
所以现在我真的被困在如何去完成这项任务的可能性。我想如果他们想给我发邮件,我可能会迫使他们自己输入我的电子邮件地址......但另一方面,我不太确定。
有一天来验证反向特殊字符的任务......
会有人能够向我提供这方面的任何类型的输入或支持?此外,任何建议以不同的,合法的方式去完成这项任务将不胜感激!
我说是合法的,因为我打算在我的一个活的项目中使用这些函数,这是一个商业列表网站(目前使用上面的php函数)...我想要做的最后一件事是开始玩并创建一个差距,并让垃圾邮件发送者的一堆信息!我认为这对商业会很糟糕......
我要说的是,任何obsfucation的问题是,你无法衡量的人向你谁得到转过身去联系。在文章中,他表示该方法是100%有效的,然后继续前进。非常明显的是,它可以100%有效地防止垃圾邮件的收集,而不是100%有效地允许那些希望实际使用电子邮件地址的人继续进行交流。 – Kzqai
@Tchalvak @Tchalvak这是一个很好的观点......但我的意思是,在这样的情况下,为了更好的安全性(更少的垃圾邮件)为他们中的大多数人打开一些用户是不是更好? –
问题是,如果没有稳健的测试(例如,在点击隐藏的电子邮件地址或其他地方时对服务器进行ping处理的javascript计数器),则不会有多少人被拒绝。人们常常被一些小障碍拒之门外,比如电子邮件地址在所有字符被点击时都会颠倒过来...... – Kzqai