2009-04-08 102 views
5

是的,我意識到這個問題已經被問到並回答了,但是我對此有一些具體的問題,我覺得在那個線程上並不清楚,我也不希望在另一個線程的混亂中迷失方向。 。電子郵件混淆問題

上一個主題表示,按照Facebook的方式將電子郵件地址呈現爲圖片的方式對於商業/專業網站來說是過度殺傷和不專業的用戶體驗。而且似乎普遍的共識是使用HTML實體或其他方法分解和/或使得字符串無法被簡單的機器人讀取的JavaScript document.write解決方案。我正在構建的應用程序甚至不需要「mailto:」功能,我只需要顯示電子郵件地址。此外,這是一個商業Web應用程序,所以它需要看起來/儘可能專業。這裏是我的問題:

  1. 如果我去執行document.write路線,並通過每個字符的HTML實體版外,還有沒有網絡爬蟲足夠成熟,執行JavaScript反正拉呈現的文本?或者這是否被認爲是最佳做法,並且完全(或幾乎完全)是垃圾郵件製造者的證據?

  2. 關於圖像解決方案,怎麼這麼不專業?如果Facebook是世界上交易量最高的應用程序之一,並且完全不由業餘愛好者操作,那麼爲什麼他們的方法在有關此主題的其他主題中完全被駁回了?

  3. 如果您的答案(如在其他線程中)不會爲此問題而煩惱,並讓用戶的垃圾郵件過濾器完成所有工作,請解釋您爲什麼這麼認爲。我們展示了他們給予我們的用戶的電子郵件地址,我有責任盡我所能保護他們。如果您認爲這是不必要的,請解釋原因。

謝謝。

回答

4
  1. 這不是垃圾郵件發送者的證明。如果有人着眼於爲您的網站和DET代碼隱藏您用於電子郵件地址的模式,然後可以編寫特定的代碼來嘗試解密。

  2. 我不知道我會說這是不專業的,但它防止複製和粘貼功能,這是一個很大的問題。有了圖像,你根本就沒有那個功能。如果您想在Outlook中將相對複雜的電子郵件地址複製到您的地址簿,該怎麼辦?你必須求助於輸入它容易出錯。

  3. 將責任移交給用戶垃圾郵件過濾器確實是一個糟糕的迴應。雖然我相信用戶應該勤於防範垃圾郵件,但這並不免除發佈地址的責任人。

爲此,試圖以絕對安全的方式做到這一點幾乎是不可能的。唯一的方法就是擁有一個共享密碼,代碼用來解密編碼的電子郵件地址。這個問題是因爲JavaScript在客戶端被解釋,所以沒有任何東西可以讓你從刮板上保密。

現在的電子郵件地址編碼器通常工作,因爲大多數電子郵件機器人收割機不會專注於每個站點的編碼。他們將嘗試使用最小化算法,以獲得最大的結果(否則,回報是不值得的)。正因爲如此,簡單的編碼器將擊敗大多數機器人。但是,如果有人真的想要訪問您網站上的電子郵件,那麼他們可以也可能很容易,因爲寫入地址的代碼是公開可用的。

考慮到所有這些因素,Facebook走圖片路線是有道理的。因爲他們可以改變圖像以使OCR幾乎不可能,所以他們幾乎可以保證不收取電子郵件地址。鑑於他們可能是世界上最大的電子郵件地址庫之一,可能會有人認爲他們比我們任何人都承擔更重的負擔,雖然不方便,但他們被迫走下這條路,以確保他們龐大的用戶羣的安全和隱私。

+0

偉大的觀點。這個網站不像FB,所以我不需要那麼安全。我同意OCR,他們可能每次都略微改變img,這將使OCR幾乎不可能。我可能會做一個JS解決方案,它使用實體和每個請求唯一的自動生成的密碼。 – Rich 2009-04-08 15:18:39

4

不少原因Javascript現在是一個很好的解決方案(隨着景觀的發展,這可能會發生變化)。

  • 的JavaScript混淆是現在
  • 你只需要逃脫別人更好的捕鼠器。只要掛果不多,垃圾郵件發送者就會爲此付出代價。所以除非每個人都開始轉向javascript,否則你現在至少可以使用
  • 大多數垃圾郵件發送者都使用基於http的腳本,這些腳本使用正則表達式進行GET和解析。使用JavaScript引擎解析肯定是可能的,但會減慢速度

關於Facebook的解決方案,我不認爲它不專業,但我可以清楚地看到爲什麼純粹主義者可能會不同意。

  • 它打破了無障礙標準(無法通過瀏覽器,語音讀者解析或點擊。
  • 它打破了語義結構(這是一個形象,而不是一個mailto鏈接了)
  • 它打破了表象層。如果增加瀏覽器的默認字體大小或使用高對比度的自定義CSS,它將不適用於電子郵件。