2012-01-14 64 views
1

我對驗證電子郵件有一些不同意見,而不是發送一封郵件給我的客戶,郵件內容與我的服務器進行驗證,我不會發送給他任何郵件給我,然後我檢查發件人和郵件中的唯一郵件並驗證該郵件。電子郵件驗證新想法

基本上,用戶將點擊一個按鈕,一個新的郵箱將打開,所有的數據已經填入,他將不得不做的是按發送。

我的問題是:首先可以這項工作?其次,與官方的方式相比,它有多麼的安全。我只想知道我是否沒有開啓任何新的安全風險。

+0

首先我會問你知道PHP嗎?它非常簡單地用PHP完成。 – 2012-01-14 16:36:53

+0

你確定你瞭解我的問題嗎?我需要一個可以讀取eMails的託管服務的實現。如果你有一個在PHP中實現它的例子,我會更加勇敢地看看它。 – 2012-01-14 16:42:03

+0

我認爲這是不安全的,並且容易通過[電子郵件欺騙](http://en.wikipedia.org/wiki/Email_spoofing)繞過。你可能會爭辯說,有可能保護你自己,並以某種方式發現電子郵件是否從正確的服務器發送 - 但最終爲什麼你的解決方案比現在更容易或更好? – olli 2014-10-18 00:25:03

回答

1

因此,您希望在創建帳戶時向用戶發送郵件,而不是標準的「請點擊此鏈接以確認您的帳戶」?

我看不出您的解決方案比原來的解決方案好。如果裏面的信息是正確的,你必須收到大量郵件,然後你必須分析。這意味着驗證帳戶的工作只能在其他地方完成。

原來的一個:你通過郵件發送一個URL,如果它打開你激活用戶。邏輯可以用一個簡單的servlet來實現。你可以在URL中加密用戶的數據庫條目,並且爲servlet留下的只是一個簡單的數據庫查找。

你的一個:你通過郵件收到標識並通過郵件運行你的邏輯。

然而,一個可能的問題是修改郵件發送地址是可行的。您永遠無法確定發送給您的郵件背後是否有真正的郵寄地址。另一個更加危險的缺陷是惡意用戶可能會使用您正在使用的郵件帳戶發送垃圾郵件。在原始解決方案中,任何傳入的郵件都可以被丟棄,但是您必須存儲並處理它們。

+1

我的解決方案更好,因爲發送郵件花費金錢,閱讀不是......但你確實有一點。我的郵件確實可能是惡意用戶的垃圾郵件。我怎麼能想到這個解決方案。也許我會爲每個用戶請求創建臨時郵件,並在收到第一封郵件或超時後關閉它。 – 2012-01-14 17:01:22

-1

我會後你的代碼:

$username = $_POST['username']; //This is your clients username 
$id = $_POST['id']; // This is your client's id 
$email = $_POST['email']; // Your user's email. 

$yemail = ""; //Here type an email where you want user to send you a notification. 

,然後使用PHP mail()函數,就是這樣。

1

嗯,我看到這裏有一點可用性問題和另一個安全問題。讓我們來談談這既是爲了:

  • 電子郵件驗證的經典方法是特別做以驗證用戶的電子郵件地址。換句話說,要驗證用戶填寫的地址是他/她的真實電子郵件地址。如果你想驗證同樣的事情,你必須「讓你的用戶」從他/她的真實電子郵件地址向你發送一封電子郵件。因此,您可以使用「電子郵件」鏈接類型並填寫所需的全部內容,但如果用戶在互聯網俱樂部或公共計算機上,該怎麼辦?他不會有任何設置。或者如果他以後想給你發郵件呢?然後怎樣呢?這是一個可用性問題。另一個問題是,你讓用戶有效地寫郵件(即使你填寫信息),這是一種額外的步驟。

  • 安全問題。如果用戶註冊並在註冊和電子郵件確認之後又有人發送了郵件呢?

+0

我將創建一個帶有mailKey和電子郵件地址的數據庫,並要求我的用戶向我發送mailKey。一旦我得到密鑰,我就把存儲在我的數據庫中的郵件取出來,並將其與發件人郵件進行比較,如果我有匹配的話,我會將這封郵件標記爲已驗證! – 2012-01-14 16:50:16

+0

讓我們假設有一個人想要傷害你的未來用戶。他可以通過攔截網頁(如果不是https)或檢查用戶的瀏覽器緩存等來獲取該唯一密鑰。一旦通過Internet未加密地發送某些內容並將其顯示在瀏覽器中,則可能是安全問題。如果你的網站不會做超祕密的東西,它可能不是一個大問題,但它是一個額外的和不必要的風險。就這樣。當然,從技術的角度來看,你可以做到這一點(而不是用一些答案中的php mail()函數)。我看不出爲什麼經典的方式會更難完成。 – 2012-01-14 17:00:45

0

你將不得不使用mailto:鏈接啓動用戶計算機上的默認電子郵件應用程序,因爲如果你會從您的網站發送電子郵件,你不會知道發件人地址。但是如果用戶沒有安裝電子郵件應用程序呢?例如,用戶使用Gmail等webmail?這在這種情況下不起作用。