2011-08-11 52 views
1

什麼是用戶名的良好正則表達式過濾器? [A-Za-z0-9 ]好嗎,還是那太不靈活了?我應該尋找其他什麼東西? (剪裁空格?)如何清理網址中的用戶名

+0

它也會顯示,所以我不想讓它很容易僞造成另一個用戶(比如說,最後有一個空格) – Timmy

回答

2

即罰款聯合國,但您可能希望讓他們使用-_%@.。 (基本上,[a-zA-Z0-9._%+-])。許多人喜歡使用他們的電子郵件作爲用戶名,並且覆蓋99%以上的用戶名。在低安全情況下,我說let'em。

+0

下劃線怎麼樣? –

+0

@machine最初我建議'\ w',然後我因爲某些原因刪除了它。我已經添加了。 – cwallenpoole

3

只需要encode用戶名,當你在一個URL中使用它。

+0

...並允許任何內容。我喜歡Drupal允許用戶名中的任何字符的方式。我不喜歡Django不允許使用空格的方式,因爲我沒有理由想到(雖然我承認我沒有看到)。 –

1

您對原始答案的評論是真正的「問題」。使用base64編碼用戶名或其他內容時很簡單,但如果你允許你的用戶選擇任意的unicode用戶名,他們可以很容易地模仿別人。

基本思想是,該unicode有很多字符,雖然看起來相同,編碼方式不同。在這裏查看更多關於homograph attacks的描述。不知道是否有任何圖書館可以處理這種情況,但如果你想要一個簡單的正則表達式解決方案,你應該堅持一些有限的字符範圍

+0

謝謝,這是正確的,也許我會堅持範圍。 – Timmy