2011-10-06 75 views
2

我一直在閱讀Michael Hartl的Ruby on Rails 3教程書,他沒有在本書的示例應用中驗證用戶名。然而,許多網站要求用戶只註冊字母數字和下劃線(甚至不總是允許)。爲什麼需要驗證用戶名?

我已經在google和stack_overflow上搜索了一段時間,但只發現了大量的人要求如何驗證上述方式的用戶名。

哎,爲什麼我們需要首先做呢?

+0

略有不同,但請記住,書中的大多數示例代碼都充滿了安全漏洞;他們只打算教導如何實現他們演示的功能,而不是打算拋光,完成,生產就緒的組件。 OWASP是一個很好的Web應用程序安全資源。前十名的項目是一個很好的起點https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project – Cheekysoft

回答

1

我能想到的一個理由是確保它們對URL友好。任何擁有用戶資源並在URL中使用用戶名而不是ID的網站都需要URL安全的用戶名。

任何需要用戶名但不將其用作資源的網站可能不需要以用戶名開頭(使用電子郵件地址進行登錄)。

編輯: 爲了回答您的評論:「空格字符是不安全的,因爲顯著的空間可能會消失,當URL被轉錄或排版或遭受的文字處理程序處理,可以引入微不足道的空間」

按照RFC 1738。本文檔還介紹了爲什麼其他字符不安全。

+0

事實上,我聽說過關於URLs不應該有空格,但總是不明白爲什麼(原諒我,如果這一個似乎常識,因爲我仍然是一個網絡開發新手在這裏:o)。此外,還有其他任何安全原因或其他問題? –

+0

我已經編輯了我的答案以回答你的問題。 –

+0

那麼如果我不使用URL中的用戶名,它將完全正確嗎?我的意思是我也使用用戶資源,但在URL中使用user_id代替~~ –

0

我同意。我認爲在大多數情況下只有空間應該被禁止。我認爲主要原因是爲了避免編碼/解碼可能帶來安全漏洞的問題。儘管如此,所有這些問題都可以並且應該以更好的方式解決。我已經看到密碼相同,甚至更加可笑(Regions不允許特殊字符)。

+0

非常感謝您的回覆。恩,那麼編碼/解碼有什麼問題呢?以及如何以更好的方式解決這些問題?你能給我一個關於這個的鏈接嗎?另外,爲什麼空間應該被禁止?由於下面Christian提到的URL問題?難道我們不能解決這個問題 - 就像使用正則表達式或其他東西的子空間一樣嗎?:) –

0

如果用戶名應該是唯一的,如果你有兩個用戶名?

John Doe 
John Doe 

如果將名稱直接放入HTML中,它們看起來完全相同。如果你解決了這個問題,那麼Unicode可能還有其他的工作要做。要求用戶名是字母數字(也可能是其他字符)解決了許多這些問題。

+0

Thx的答覆。那麼我沒有驗證用戶名的意義恰恰在於讓用戶決定他們想要使用的任何名字!當網站告訴我「這個名字已被採納~~」時,我總是感到頭痛。對於那些只想第一次訪問帳戶的人來看看網站,請儘可能多地使用空間,稍後再更改爲您的主要名字!或者甚至你認爲你的名字中有很多空格是很酷的~~好吧,一起去吧~~沒事吧?我的意思是如果我不在網址中使用用戶名,就像上面提到的基督徒一樣...... –

0

除了其他陳述的原因,允許任意的Unicode字符使得一個用戶可以通過使用與拉丁字母非常相似的Unicode字符來創建與另一個用戶的名字非常相似的名稱,例如,

K℮ℎ

KEH

(以上正確呈現至少在Chrome在Windows 7)。

另一方面,禁止Unicode字符會對非英語訪客造成不必要的偏見,他們可能在其指定名稱中包含重音符號(例如Jürgen),或者其母語可能使用不基於拉丁字符的字母(例如孔夫子)。

相關問題