标签:php css obfuscation
我一直在阅读电子邮件混淆.
我发现了一篇名为Best Method for Email Obfuscation? – By Jeff Starr的有趣帖子,他描述了SilvanMühlemann在1.5年内进行的各种测试.
根据这项研究,css obfustication在整个1.5年的测试中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标签.
所以现在我真的陷入了如何完成这项任务的可能性.我想如果他们想给我发邮件,我可能会强迫人们自己输入我的电子邮件地址……但是,另一方面,我对此不太确定.
然后是反向验证特殊字符的任务…
在这方面,是否有人能够为我提供任何类型的输入或支持?此外,任何有关此任务的不同,LEGITIMATE方式的建议将不胜感激!
我说合法,因为我计划在我的一个商业列表网站(目前使用上面的php函数)的一个实时项目中使用这些功能…我想做的最后一件事是开始玩游戏并创造一个差距让我们为垃圾邮件发送者提供了大量信息!我认为这对业务来说非常糟糕……
解决方法:
在你混淆它之前反过来吧……
$email = 'blah@whatever.co.uk';
$new = convert_email_adr($email);
echo '<span style="unicode-bidi:bidi-override; direction: rtl;">'.$new.'</span>';
function convert_email_adr($email, $reverse = true, $obfuscate = true)
{
$email = trim($email);
if($reverse)
{
$email = strrev($email);
}
if($obfuscate)
{
$pieces = str_split($email);
$email = '';
foreach($pieces as $piece)
{
$email .= '&#'.ord($piece).';';
}
}
return $email;
}
标签:php,css,obfuscation 来源: https://codeday.me/bug/20190521/1146709.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。