Cấp bậc tác giả:

DOTNET

Số xác nhận an toàn thông qua Regular Expressions

Được viết bởi webmaster ngày 28/09/2013 lúc 01:57 AM
Regular Expressions thường được sử dụng để xử lý tất cả các loại xác nhận
  • 0
  • 7861

Số xác nhận an toàn thông qua Regular Expressions

Regular Expressions thường được sử dụng để xử lý tất cả các loại xác nhận:
  • Địa chỉ E-mail
  • Mã bưu chính
  • Số điện thoại
  • Ngày và giờ
  • Số an sinh xã hội
Bài viết này tập trung vào xác nhận cuối cùng của những: số an sinh xã hội và lý do tại sao khó lừa đảo hơn. Tôi sẽ cung cấp một vài phương thức khác nhau để xử lý các xác nhận thực tế thông qua các Regular Expression và cho phép bạn xác định cái nào có thể phù hợp nhất với nhu cầu của bạn.

socialsecuritycard.jpg
Xác nhận số an sinh xã hội có thể không chỉ là định dạng của số đó.

Thông tin: Số Social Sercurity

Số Social Sercurity ( SSN ) là một số chín chữ số được cấp cho công dân Hoa Kỳ, thường trú và tạm thời ( làm việc cư dân) trong phần 205 (c) (2) của Đạo Luật An Sinh Xã Hội. Con số này được cấp cho cá nhân của Cục Quản lý An sinh Xã hội và mục đích chính là để theo dõi cá nhân cho chương trình An Sinh Xã Hội Hoa Kỳ, trong đó có thể phân bổ lợi ích và thường được gọi là định danh duy nhất cho cá nhân tại Hoa Kỳ cho một loạt các liên bang. ( Hoa Kỳ không phải là quốc gia duy nhất sử dụng số an sinh xã hội, nhưng chỉ để minh chứng, tôi sẽ tập trung vào validating số An Sinh Xã Hội Hoa Kỳ )

Số Tự bản thân.

social-security-number.jpg

Một ví dụ minh hoạ các thành phần khác nhau của số (mà không còn được sử dụng để xác nhận)

Số chính nó có thể được chia thành ba thành phần chính và xuất hiện trong các định dạng sau:

AAA-GGG-SSSS

hoặc ( không có dấu gạch ngang )

AAAGGGSSSS

Những phần có thể được chia ra như sau:

Area Number (A)- Đây là số có ba chữ số đã được sử dụng để chỉ định số an sinh xã hội dựa trên vị trí địa lý. Hoặc có thể là mã văn phòng mà thẻ chính nó được ban hành từ hoặc dựa trên mã zip rằng người nộp đơn đang sống.
Group Number (G) - Đây là một số có hai chữ số trong khoảng 00-99 và sử dụng tập các quy tắc để xây dựng chuỗi giá trị từ đầu đến cuối trong nhóm để tránh các giá trị liên tục được sử dụng.
Serial Number (S) -   Đây là chuỗi số thẳng về phía trước đầu ra liên tiếp 0000-9999.

Bạn có thể nhận thấy nhiều thì quá khứ trong các mô tả trước đó. Là do vào ngày 25 Tháng 6 năm 2011, Cục Quản lý An sinh Xã hội sửa đổi quy trình nhiệm vụ của mình để sử dụng một hệ thống ngẫu nhiên mà đã có những thay đổi sau đây:

Loại bỏ ý nghĩa địa lý của số vùng - Ba chữ số đầu tiên sẽ bây giờ không còn liên quan gì đến vị trí địa lý của cá nhân hoặc nhà nước.
Loại bỏ các phương thức số nhóm gán các giá trị - Điều này không thực hiện bất kỳ thay đổi thực sự quan trọng như số nhóm bây giờ chỉ đơn giản là được phân ngẫu nhiên.
Số khu vực trước đây không được gán bây giờ sẽ được phép chuyển nhượng - Điều này sẽ cho phép bất kỳ số khu vực trước đây chưa sử dụng ( với một vài trường hợp ngoại lệ ) được giao cho số an sinh xã hội mới.

Chứng thực số

walletssn2.gif

Một rủi ro quảng cáo cuối cùng dẫn đến số An Sinh Xã Hội được in và phát hành vào ví từ Woolworths.

Đề cập trước đó "hành động ngẫu nhiên" đã làm cho nó dễ dàng hơn đáng kể để sử dụng một cơ chế như Regular Expression để xử lý xác nhận số an sinh xã hội. Bạn không còn phải lo lắng về số lượng và vùng cao nhất mà nhóm đã được phân.

Tuy nhiên, bạn vẫn có thể không chỉ đi ném bất kỳ giá trị vào đó và hy vọng nó có giá trị như Cục An ninh xã hội vẫn còn có một vài số An Sinh Xã Hội có một cách rõ ràng "giới hạn off" như đã đề cập dưới đây.

 Một số An Sinh Xã Hội KHÔNG THỂ: 

Chứa toàn bộ zero trong bất kỳ nhóm cụ thể (tức là 000-##-####, ###-00-####, or ###-##-0000)
Bắt đầu với '666'.
Bắt đầu với bất kỳ giá trị từ '900-999 '
Có '078-05-1120'   ( do Wallet Fiasco của Woolworth )
Có '219-09-9999' (xuất hiện trong quảng cáo cho An Sinh Xã Hội)

Dựa trên những quy tắc, chúng ta hãy đi qua một vài phương thức khác nhau để xác nhận sử dụng Regular Expressions mà dao động trong mức độ nghiêm trọng và logic.

Định dạng cơ bản Kiểm tra ( "Tôi không quan tâm" Validation )

^ \ D { 3 } - \ d { 2 } - \ d { 4 } $

hoặc ( không có dấu gạch ngang )

^\d{9}$

Phương thức này như thẳng về phía trước càng tốt và đáng ngạc nhiên nó thực sự sẽ xác nhận tất cả các số an sinh xã hội có thể đơn trên mạng, nhưng vấn đề là nhiều giá trị mà nó sẽ chấp nhận thậm chí không giá trị hợp lệ. Hãy xem xét đơn giản biểu thức hỏng sau:

^      #Beginning of expression
\d{3}  #Exactly three digits (denoted by \d and the {3} specifies the number)
-      #An explicit 'dash'
\d{2}  #Exactly two digits
-      #Another explicit 'dash'
\d{4}  #Exactly four digits
$      #End of expression

Điều này không có bất kỳ quy tắc và trường hợp ngoại lệ đã được đề cập ở trên gợi ý trước đó, nhưng nó có chức năng đảm bảo rằng con số này ở dạng thích hợp.

Bạn có thể thấy một ví dụ về điều này trong hành động dưới đây:

Ví dụ tương tác thông qua JSBin http://jsbin.com/ILApewuM/1/edit?js,output

Xác nhận thực tế ( đưa vào xem xét tất cả các quy định trước đây )

^(?!219-09-9999|078-05-1120)(?!666|000|9\d{2})\d{3}-(?!00)\d{2}-(?!0{4})\d{4}$

hoặc ( không có dấu gạch ngang ):

^(?!219099999|078051120)(?!666|000|9\d{2})\d{3}(?!00)\d{2}(?!0{4})\d{4}$

Nó sẽ xác nhận bất kỳ số an sinh xã hội hợp lệ theo các hạn chế ( và trường hợp ngoại lệ ) được liệt kê của Cục Quản lý An sinh Xã hội. Chúng ta hãy phá vỡ để xem những gì đang xảy ra:

^                           #Start of expression
(?!219-09-9999|078-05-1120) #Don't allow "219-09-999" or "078-05-1120" explicitly
(?!666|000|9\d{2})\d{3}     #Don't allow the SSN to begin with 666, 000 or anything between 900-999
-                           #Explicit dash (separating Area and Group numbers)
(?!00)\d{2}                 #Don't allow the Group Number to be "00"
-                           #Another dash (separating Group and Serial numbers)
(?!0{4})\d{4}               #Don't allow last four digits to be "0000"
$                           #End of expression

Điều này sẽ làm cho tất cả các trường hợp chính mà bạn muốn xác nhận khi xử lý Regular Expressions.

Bạn có thể thấy một ví dụ về điều này trong hành động dưới đây:


Over-The-Top Validation ( kiểm tra cho các giá trị thường được làm giả )

^(?!\b(\d)\1+-(\d)\1+-(\d)\1+\b)(?!123-45-6789|219-09-9999|078-05-1120)(?!666|000|9\d{2})\d{3}-(?!00)\d{2}-(?!0{4})\d{4}$

hoặc ( không có dấu gạch ngang )

^(?!\b(\d)\1+\b)(?!123456789|219099999|078051120)(?!666|000|9\d{2})\d{3}(?!00)\d{2}(?!0{4})\d{4}$

^                                       #Start of expression
(?!\b(\d)\1+-(\d)\1+-(\d)\1+\b)         #Don't allow all matching digits for every field
(?!123-45-6789|219-09-9999|078-05-1120) #Don't allow "123-45-6789", "219-09-9999" or "078-05-1120"
(?!666|000|9\d{2})\d{3}                 #Don't allow the SSN to begin with 666, 000 or anything between 900-999
-                                       #A dash (separating Area and Group numbers)
(?!00)\d{2}                             #Don't allow the Group Number to be "00"
-                                       #Another dash (separating Group and Serial numbers)
(?!0{4})\d{4}                           #Don't allow last four digits to be "0000"
$                                       #End of expression

Expression  này sẽ không cho phép một số an sinh xã hội là:

Chứa toàn bộ zero trong bất kỳ nhóm cụ thể  (tức là 000 - # # - # # # # # # # -00 - # # # # hoặc # # # - # # -0000)
Bắt đầu với '666 '
Bắt đầu với bất kỳ giá trị từ '900-999 '
Bằng '078-05-1120 '   ( do Wallet Fiasco của Woolworth )
Bằng '219-09-9999 '  (xuất hiện trong một quảng cáo cho An Sinh Xã Hội)

và: 

Chứa tất cả các giá trị phù hợp (tức là 000-00-0000, 111-11-1111, 222-22-2222, vv)
Chứa tất cả các giá trị incrementing (tức là 123-45-6789)
Điều quan trọng cần lưu ý rằng mặc dù biểu hiện này sẽ giúp lá nỗ lực gian lận có thể, nó là một chút "over-the-top" và thực sự sẽ xem xét một số giá trị hợp lệ ( như 123-45-6789 ) không hợp lệ. Sử dụng bản án tốt nhất của bạn để xác định xem đây là một lựa chọn cho bạn và nhu cầu kinh doanh của bạn.

Bạn có thể thấy expression này trong hành động dưới đây:

Ví dụ tương tác thông qua JSBin 

Sử dụng Dịch vụ Xác Nhận An Sinh Xã Hội 

Nếu bạn thực sự cần một phương thức đáng tin cậy xử lý xã hội xác nhận số an, An Sinh Xã Hội cung cấp một dịch vụ đúng cách sẽ xác nhận một số cho bạn, tuy nhiên nó có thể không luôn luôn được miễn phí hoặc rất "nhanh chóng". Bạn có thể truy cập vào trang sau để biết thêm thông tin về việc sử dụng các dịch vụ mà họ cung cấp:


Bạn có thể tìm thấy một trang tương tác với ba ví dụ đã được đề cập trong bài viết dưới đây thông qua JSBin

Ví dụ sử dụng cơ bản, thực tế và hơn-the-Top kiểm định cho số An Sinh Xã Hội
Bạn cũng có thể truy cập vào một phiên bản NET-cụ thể của các ví dụ (. cả với việc triển khai trong C # và Javascript ) từ kho lưu trữ trên github sau:

Tải về tất cả các ví dụ về Javascript và C # từ github.

Nguồn bài viết: DOTNET.VN

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML