2009-07-21 34 views
5

Khi đăng ký tài khoản mới, ứng dụng web thường yêu cầu câu trả lời cho 'câu hỏi bảo mật', ví dụ: Tên của chó, v.v.Regex để bẻ khóa bàn phím

Tôi muốn xem qua cơ sở dữ liệu của chúng tôi và tìm kiếm các trường hợp người dùng vừa mới chạm vào bàn phím thay vì cung cấp câu trả lời hợp pháp - đây là chỉ báo cao về tài khoản lạm dụng/gian lận.

"Tên thời con gái của mẹ?" lakdsjflkaj

Bất kỳ đề xuất nào về cách tôi nên thực hiện việc này?

Lưu ý: Tôi không chỉ sử dụng biểu thức thông thường bằng các 'câu hỏi bảo mật câu trả lời'

Các 'câu trả lời' có thể là:

  1. được chọn từ một db sử dụng một vài sql cơ bản regexes

  2. Phân tích nhiều lần khi cần thiết sử dụng regexes python

  3. So/tỉa/ghi bàn khi cần thiết

Đây là một câu hỏi kỹ thuật, không phải là một triết học một ;-)

Cảm ơn!

+30

Đó là tên của mẹ tôi! –

+0

@mmyers Thật đáng yêu! – jjnguy

+0

Cô Lakdsjflkaj được nâng lên một bàn phím Masher ... – BigBlondeViking

Trả lời

5

Có lẽ bạn nên phân tích phân tích n-gram, tương tự như phát hiện ngôn ngữ.

This code là ví dụ về phát hiện ngôn ngữ bằng cách sử dụng trigram. Đoán của tôi là bàn phím đập vỡ hình tam giác là khá độc đáo và không xuất hiện trong ngôn ngữ bình thường.

+0

Cảm ơn bạn đã nhập. Đây là một bước đi đúng hướng cho tôi. Thêm ý tưởng như thế này, xin vui lòng ..! - mC –

+0

Chà, điều này thật tuyệt vời ..! - mC –

39

Tôi sẽ không làm điều này - theo ý kiến ​​của tôi những câu hỏi này làm suy yếu an ninh, vì vậy với tư cách là người dùng, tôi luôn cố gắng cung cấp một mật khẩu bán khác làm câu trả lời - cho bạn nó bị nghiền nát. Vâng, nó bị nghiền nát, nhưng đó chính là điều tôi muốn làm.

Btw. Tôi không chắc chắn về thực tế, rằng bạn có thể truy vấn các câu trả lời. Kể từ khi họ vượt qua bảo vệ mật khẩu của bạn, họ nên được xử lý như mật khẩu = được lưu trữ như một băm!

Edit:
Khi tôi đọc this article tôi ngay lập tức nhớ này ;-)

+12

Mỗi đoạn trong câu trả lời đó xứng đáng nhận được một bài viết riêng. – innaM

+0

+1, tôi sử dụng một mật khẩu riêng biệt cho câu trả lời câu hỏi bí mật của tôi, họ cũng definatly nên được lưu trữ như băm –

+0

db của ứng dụng đã có thông tin này được lưu trữ. Tôi đang tìm những cách khéo léo để tìm kiếm những người đã nghiền nát bàn phím. Một mật khẩu bán sẽ không bị 'nghiền', vì có một số ý nghĩ được đưa vào ... nghiền có rất nhiều chữ cái trong nhà như 'asdf' và cứ thế. Do đó, thử thách. ;-) –

6

Không có cách nào để làm điều này với một regex câu hỏi. Thực ra, tôi không thể nghĩ ra một cách hợp lý để làm điều này chút nào - bạn sẽ vẽ đường ranh giới giữa nghi ngờ và đáng ngờ ở đâu? Tôi, một lần, thường trả lời các câu hỏi bảo mật với một câu trả lời khó hiểu. Xét cho cùng, tên thời con gái của mẹ tôi không phải là điều khó tìm nhất.

+0

obfuscated! = Nghiền ... nghiền là một phân bố khá riêng biệt của tần số và khoảng cách thư, esp w/rất nhiều hàng nhà hoặc các phím liền kề. Tôi không tìm kiếm độ chính xác 100% ở đây, tất nhiên. Tôi có gần một triệu "câu trả lời bảo mật" được lưu trữ, và tôi muốn tìm những câu trả lời thực sự đáng ngờ. –

0

Bạn có thể tìm các mẫu không có ý nghĩa ngữ âm. Chẳng hạn như:

'q' không được theo sau bởi 'u'.

asdf

qwer

zxcv

asdlasd

Về cơ bản, hãy thử nghiền trên bàn phím của bạn, hãy xem những gì bạn nhận được, và cắm rằng trong bộ lọc của bạn. Cũng cắm các quy tắc ngữ pháp khác nhau.Tuy nhiên, vì đó là tên bạn đang đối phó với, bạn sẽ luôn luôn nhận được 'gã đó' với cái tên kỳ lạ sẽ gây ra một dương tính giả.

+0

Đối với người dùng bố trí bàn phím Dvorak, hoặc người dùng tiếng Pháp với bàn phím AZERTY, hoặc người dùng Nga nhập bằng chữ Kirin ... – NickFitz

+0

Cảm ơn bạn đã nhập. Tôi sẽ kết hợp điều này vào phiên bản cuối cùng. –

4

Nếu bạn có thể tìm danh sách xác suất cặp chữ bằng tiếng Anh, bạn có thể xây dựng xác suất gần đúng cho từ không phải là từ tiếng Anh "thực", sử dụng các cặp và cặp ít nhất có thể không có trong danh sách. Thật không may, nếu bạn có tên hoặc "không lời" khác thì bạn không thể buộc họ phải là từ tiếng Anh.

+0

Hmm, tôi thích điều này. Tôi sẽ kiểm tra cái này. Cảm ơn phản hồi của bạn. –

+0

Điều này tương tự như nhận xét về 'phân tích phân phối n-gram'. Những điều tuyệt vời, cảm ơn một lần nữa - mC –

+0

Không phải tất cả người dùng đều là người nói tiếng Anh bản địa. Mọi người có thể dễ dàng chọn đặt tên thời con gái của mẹ mình bằng tiếng Hoa bản địa của nó, hoặc đặt "ワ ン コ" làm tên của thú cưng đầu tiên của họ. –

2

Bạn có thể kiểm tra một chữ cái viết hoa ngay từ đầu .... điều đó sẽ giúp bạn có được một số xác thực sai.

Google nhanh chóng đã cho tôi this, bạn có thể so sánh từng tên với một tên trong danh sách đó.

Rõ ràng chỉ hoạt động cho câu hỏi bảo mật mà bạn đã nêu.

có bạn cũng thấy điều này:

Anatomy of the twitter attack

Tôi sẽ nghĩ rằng thời gian khó khăn tiếp theo tôi thực hiện một câu hỏi bảo mật.

+0

Ồ, đó là một bài viết tuyệt vời. Cảm ơn vì điều đó! Vâng, nếu đây là ứng dụng của tôi, tôi sẽ suy nghĩ lại bằng cách sử dụng tính năng này. Mặt khác, với mục đích phát hiện tài khoản gian lận, nó có thể giúp tôi, vì phần còn lại của thông tin (tên, CC#, địa chỉ, quốc gia IP, v.v.) đều hợp pháp. Chỉ cần làm nước chanh ở đây ;-) –

2

Nếu câu hỏi của bạn là điều gì đó liên quan đến tên thật, con người, điều này là không thể. Hãy xem xét các tên Châu Á được nhập bằng các ký tự La Mã; họ có thể rất tốt chuyến đi bất kỳ bộ lọc bạn đưa ra, nhưng vẫn hoàn toàn hợp pháp.

+0

Huh? Tôi không hiểu Gupta, Singh, Zhang, Nguyen, Tran, Watanabe vv sẽ đi lên bất kỳ bộ lọc hợp lý nào, đặc biệt nếu số liệu thống kê n-gram dựa trên danh sách họ có liên quan đến cơ sở khách hàng - nếu bạn có đủ khách hàng, sử dụng họ của khách hàng để có được số liệu thống kê! Trong mọi trường hợp, bạn phải được chuẩn bị cho những điều tích cực sai, và bạn không gửi cảnh sát vũ trang trên cơ sở của 1 chỉ số và không có sự xem xét của con người. –

12

Cách tiếp cận toàn bộ câu hỏi bảo mật là hoàn toàn sai lầm.

Tôi luôn tìm thấy mọi người đặt câu trả lời bảo mật yếu hơn mật khẩu họ sử dụng.
Câu hỏi bảo mật chỉ là một liên kết trong chuỗi bảo mật - liên kết yếu hơn!

IMO, một cách tốt hơn để truy cập sẽ là cho phép người dùng yêu cầu mật khẩu mới được gửi tới id email đã đăng ký. Điều này có hai lợi thế.

  1. nỗ lực brute-force có để định vị và phá vỡ các dịch vụ e-mail đầu tiên (và, bạn sẽ không bao giờ giúp họ có - giữ id đăng ký e-mail rất được bảo vệ)
    • người dùng dịch vụ của bạn sẽ luôn luôn nhận được một dấu hiệu cho thấy khi ai đó cố gắng một brute-force (họ nhận được một email nói rằng họ đã cố gắng để tái tạo mật khẩu của họ)

Nếu bạn pHẢI có thắc mắc thầm kín, hãy để họ kích hoạt một lại được tạo (không bao giờ gửi người dùng 's mật khẩu, tái tạo một tạm thời, tốt nhất một lần buộc) mật khẩu gửi đến id e-mail mà họ đăng ký với - và, không hiển thị rằng ở tất cả.

Bí quyết khác là đặt câu hỏi bí mật ITSELF id email đã đăng ký của họ.
Nếu họ đặt đúng, bạn gửi được tạo lại mật khẩu tạm thời cho id email đó.

+0

Vâng, tôi chưa thảo luận chính xác những gì xảy ra sau khi họ nhấn gửi.
Ý tưởng của bạn là âm thanh. Trong ứng dụng của chúng tôi, họ phải trả lời câu hỏi bảo mật để mật khẩu mới được gửi tới id email đã đăng ký của họ, chính xác như bạn đã nói.
Thách thức này là tất cả về * phát hiện các mẫu nghiền với mã regex + *, nhưng tôi nghĩ chúng tôi đã bắt đầu một cuộc tranh luận về các câu hỏi bảo mật ;-)
Cảm ơn bạn một lần nữa cho đầu vào của bạn. –

+0

Vâng, đoán điều đó có nghĩa là không có html trong các bình luận huh. –

+1

Tệ hơn. Bạn chỉ đang tạo những người dùng có ý thức bảo mật, những người không bao giờ nhập câu trả lời thực sự cho các câu hỏi bảo mật, không thể khôi phục mật khẩu của họ. –

4

Có thể bạn có thể kiểm tra sự phong phú của phụ âm. Ví dụ: trong ví dụ lakdsjflkaj của bạn có 2 nguyên âm (a) và 9 phụ âm. Thông thường xác suất nhấn nguyên âm khi nhấn phím ngẫu nhiên thấp hơn nhiều so với nguyên âm chạm phụ âm.

+0

Cách tiếp cận thú vị. Tôi nghĩ rằng điều này sẽ làm việc tốt với một số các xét nghiệm khác tôi có trong cửa hàng. Cảm ơn! - mC –

0

Thay vì cụm từ thông dụng, tại sao không chỉ so sánh với danh sách các giá trị tốt đã biết? Ví dụ: so sánh tên thời con gái của mẹ với dữ liệu điều tra dân số hoặc tên thú cưng với bất kỳ danh sách tên thú cưng nào bạn có thể tìm thấy trực tuyến. Đối với một phiên bản đơn giản hơn nhiều, chỉ cần thực hiện tìm kiếm trên Google cho bất kỳ nội dung nào được nhập. Tên hợp pháp phải có nhiều kết quả, trong khi bàn phím nghiền sẽ dẫn đến rất ít nếu có.

Giống như với bất kỳ phương pháp nào khác, bạn sẽ vẫn cần xử lý các mặt tích cực sai.

+0

Đó là một cách tiếp cận thú vị, cảm ơn cho đầu vào. Chúng tôi có một số câu hỏi bảo mật khác nhau, và thành thật mà nói, tôi chỉ đang tìm kiếm vài trăm tài khoản đáng ngờ mà tất cả mọi người đều đã trả lời câu hỏi 'câu hỏi bảo mật'. Cảm ơn một lần nữa - mC –

+0

Điều này hoàn toàn vô lý. Nếu mọi người muốn nghiền bàn phím, hãy để chúng - bạn không thể là cảnh sát mọi lúc. –

3

Dejunk là thư viện Ruby mà từ đó bạn có thể tạo cảm hứng. Nó thực hiện một vài gợi ý trong các câu trả lời khác. Nó coi đầu vào là mashing bàn phím nếu đầu vào:

  • Chứa các ký tự đại diện không có khả năng xuất hiện trong văn bản thực, nhưng chúng gần nhau trên bàn phím. (Thư viện bao gồm một danh sách các bigrams như vậy.)
  • Bắt đầu với một dấu chấm câu không mong muốn.
  • Có quá nhiều từ rất ngắn.
  • Không có nguyên âm.
  • Có các ký tự được lặp lại một số lần không hợp lý.
Các vấn đề liên quan