Xác thực đầu vào trong JavaScript là gì?
Bài viết này tập trung vào việc cung cấp hướng dẫn rõ ràng, đơn giản, khả thi để cung cấp chức năng bảo mật Xác thực đầu vào trong các ứng dụng của bạn Show
Mục tiêu của xác thực đầu vàoXác thực đầu vào được thực hiện để đảm bảo chỉ dữ liệu được định dạng đúng mới được đưa vào quy trình công việc trong hệ thống thông tin, ngăn dữ liệu không đúng định dạng tồn tại trong cơ sở dữ liệu và gây ra sự cố cho các thành phần hạ nguồn khác nhau. Việc xác thực đầu vào phải diễn ra càng sớm càng tốt trong luồng dữ liệu, tốt nhất là ngay khi nhận được dữ liệu từ bên ngoài Dữ liệu từ tất cả các nguồn có khả năng không đáng tin cậy phải được xác thực đầu vào, bao gồm không chỉ các ứng dụng khách web truy cập Internet mà còn cả nguồn cấp dữ liệu phụ trợ qua các mạng bên ngoài, từ các nhà cung cấp, đối tác, nhà cung cấp hoặc cơ quan quản lý, mỗi nguồn có thể tự bị xâm phạm và bắt đầu gửi không đúng định dạng Xác thực đầu vào không nên được sử dụng làm phương pháp chính để ngăn chặn XSS, SQL Injection và các cuộc tấn công khác được đề cập trong các trang gian lận tương ứng nhưng có thể góp phần đáng kể vào việc giảm tác động của chúng nếu được triển khai đúng cách Chiến lược xác thực đầu vàoXác thực đầu vào nên được áp dụng ở cả cấp độ cú pháp và ngữ nghĩa Xác thực cú pháp phải thực thi đúng cú pháp của các trường có cấu trúc (e. g. SSN, ngày, ký hiệu tiền tệ) Xác thực ngữ nghĩa nên thực thi tính chính xác của các giá trị của chúng trong bối cảnh kinh doanh cụ thể (e. g. ngày bắt đầu trước ngày kết thúc, giá nằm trong phạm vi dự kiến) Luôn luôn khuyến nghị ngăn chặn các cuộc tấn công càng sớm càng tốt trong quá trình xử lý yêu cầu của người dùng (của kẻ tấn công). Xác thực đầu vào có thể được sử dụng để phát hiện đầu vào trái phép trước khi nó được ứng dụng xử lý Triển khai xác thực đầu vàoVí dụ, xác thực đầu vào có thể được thực hiện bằng cách sử dụng bất kỳ kỹ thuật lập trình nào cho phép thực thi hiệu quả tính chính xác về cú pháp và ngữ nghĩa
Danh sách cho phép so với danh sách chặnMột sai lầm phổ biến là sử dụng xác thực danh sách khối để cố gắng phát hiện các ký tự và mẫu có thể nguy hiểm như ký tự dấu nháy đơn 0, nhưng đây là một cách tiếp cận thiếu sót nghiêm trọng vì nó không đáng kể đối với kẻ tấn công Ngoài ra, các bộ lọc như vậy thường ngăn đầu vào được ủy quyền, chẳng hạn như 1, trong đó ký tự ' hoàn toàn hợp pháp. Để biết thêm thông tin về tránh bộ lọc XSS, vui lòng xem trang wiki nàyCho phép xác thực danh sách phù hợp với tất cả các trường đầu vào do người dùng cung cấp. Xác thực danh sách cho phép liên quan đến việc xác định chính xác những gì IS được phép và theo định nghĩa, mọi thứ khác không được phép Nếu đó là dữ liệu có cấu trúc tốt, chẳng hạn như ngày tháng, số an sinh xã hội, mã zip, địa chỉ email, v.v. thì nhà phát triển sẽ có thể xác định mẫu xác thực rất mạnh, thường dựa trên các biểu thức chính quy, để xác thực đầu vào đó Nếu trường đầu vào đến từ một nhóm tùy chọn cố định, chẳng hạn như danh sách thả xuống hoặc nút radio, thì đầu vào cần khớp chính xác với một trong các giá trị được cung cấp cho người dùng ngay từ đầu Xác thực văn bản Unicode dạng tự doVăn bản dạng tự do, đặc biệt là với các ký tự Unicode, được coi là khó xác thực do khoảng cách ký tự tương đối lớn cần được cho phép Đó cũng là kiểu nhập văn bản dạng tự do làm nổi bật tầm quan trọng của mã hóa đầu ra nhận biết ngữ cảnh phù hợp và chứng minh khá rõ ràng rằng xác thực đầu vào không phải là biện pháp bảo vệ chính chống lại Cross-Site Scripting. Nếu người dùng của bạn muốn nhập dấu nháy đơn 4 trong trường nhận xét của họ, họ có thể có lý do hoàn toàn chính đáng cho điều đó và công việc của ứng dụng là xử lý đúng cách trong toàn bộ vòng đời của dữ liệuPhương tiện xác thực đầu vào chính cho kiểu nhập văn bản dạng tự do phải là
Người giới thiệu
biểu thức chính quyViệc phát triển các biểu thức chính quy có thể phức tạp và nằm ngoài phạm vi của bảng gian lận này Có rất nhiều tài nguyên trên internet về cách viết biểu thức chính quy, bao gồm trang này và Kho lưu trữ Regex xác thực OWASP Khi thiết kế biểu thức chính quy, hãy lưu ý các cuộc tấn công từ chối dịch vụ RegEx (ReDoS). Các cuộc tấn công này khiến một chương trình sử dụng Biểu thức chính quy được thiết kế kém hoạt động rất chậm và sử dụng tài nguyên CPU trong một thời gian rất dài Tóm lại, xác thực đầu vào nên
Danh sách cho phép Ví dụ biểu thức chính quyXác thực một U. S. Mã Zip (5 chữ số cộng với -4 tùy chọn)
Đang xác thực U. S. Lựa chọn trạng thái từ menu thả xuống
Ví dụ sử dụng Java Regex Ví dụ xác thực tham số "zip" bằng biểu thức thông thường
Một số trình xác thực danh sách Cho phép cũng đã được xác định trước trong các gói mã nguồn mở khác nhau mà bạn có thể tận dụng. Ví dụ
Xác thực phía máy khách so với phía máy chủXin lưu ý rằng bất kỳ xác thực đầu vào JavaScript nào được thực hiện trên máy khách đều có thể bị bỏ qua bởi kẻ tấn công vô hiệu hóa JavaScript hoặc sử dụng Proxy Web. Đảm bảo rằng mọi xác thực đầu vào được thực hiện trên máy khách cũng được thực hiện trên máy chủ Xác thực nội dung người dùng phong phúRất khó để xác thực nội dung phong phú do người dùng gửi. Để biết thêm thông tin, vui lòng xem bảng tóm tắt XSS về Vệ sinh đánh dấu HTML bằng thư viện được thiết kế cho công việc Ngăn chặn XSS và Chính sách bảo mật nội dungTất cả dữ liệu người dùng được kiểm soát phải được mã hóa khi được trả về trong trang HTML để ngăn chặn việc thực thi dữ liệu độc hại (e. g. XSS). Ví dụ: 0 sẽ được trả về là 8Loại mã hóa dành riêng cho ngữ cảnh của trang nơi dữ liệu do người dùng kiểm soát được chèn vào. Ví dụ: mã hóa thực thể HTML phù hợp với dữ liệu được đặt trong phần thân HTML. Tuy nhiên, dữ liệu người dùng được đặt vào tập lệnh sẽ cần mã hóa đầu ra cụ thể của JavaScript Thông tin chi tiết về phòng chống XSS tại đây. Bảng gian lận phòng chống XSS của OWASP Xác thực tải lên tệpNhiều trang web cho phép người dùng tải lên các tệp, chẳng hạn như ảnh hồ sơ hoặc hơn thế nữa. Phần này giúp cung cấp tính năng đó một cách an toàn Kiểm tra bảng gian lận tải lên tệp Tải lên Xác minh
Tải lên dung lượng lưu trữ
Phục vụ công khai nội dung đã tải lên
Cẩn thận với các tệp "đặc biệt"Tính năng tải lên phải sử dụng cách tiếp cận danh sách cho phép để chỉ cho phép các loại tệp và tiện ích mở rộng cụ thể. Tuy nhiên, điều quan trọng là phải biết các loại tệp sau, nếu được phép, có thể dẫn đến lỗ hổng bảo mật
Xác minh tải lên hình ảnh
Xác thực địa chỉ emailXác thực cú phápĐịnh dạng của địa chỉ email được xác định bởi và phức tạp hơn nhiều so với hầu hết mọi người nhận ra. Ví dụ: tất cả những địa chỉ sau đều được coi là địa chỉ email hợp lệ
Việc phân tích đúng địa chỉ email để xác định tính hợp lệ với các biểu thức chính quy là rất phức tạp, mặc dù có một số Cảnh báo lớn nhất về điều này là mặc dù RFC xác định định dạng rất linh hoạt cho địa chỉ email, nhưng hầu hết các triển khai trong thế giới thực (chẳng hạn như máy chủ thư) sử dụng định dạng địa chỉ bị hạn chế hơn nhiều, nghĩa là chúng sẽ từ chối các địa chỉ hợp lệ về mặt kỹ thuật. Mặc dù chúng có thể đúng về mặt kỹ thuật, nhưng những địa chỉ này sẽ ít được sử dụng nếu ứng dụng của bạn không thể thực sự gửi email đến chúng Do đó, cách tốt nhất để xác thực địa chỉ email là thực hiện một số xác thực cơ bản ban đầu, sau đó chuyển địa chỉ đến máy chủ thư và bắt ngoại lệ nếu nó từ chối. Điều này có nghĩa là bất kỳ ứng dụng nào cũng có thể tin tưởng rằng máy chủ thư của nó có thể gửi email đến bất kỳ địa chỉ nào mà nó chấp nhận. Việc xác nhận ban đầu có thể đơn giản như
Xác thực ngữ nghĩaXác thực ngữ nghĩa là về việc xác định xem địa chỉ email có chính xác và hợp pháp hay không. Cách phổ biến nhất để thực hiện việc này là gửi email cho người dùng và yêu cầu họ nhấp vào liên kết trong email hoặc nhập mã đã được gửi cho họ. Điều này cung cấp một mức độ đảm bảo cơ bản rằng
Các liên kết được gửi tới người dùng để chứng minh quyền sở hữu phải chứa mã thông báo
Sau khi xác thực quyền sở hữu địa chỉ email, người dùng sẽ được yêu cầu xác thực trên ứng dụng thông qua cơ chế thông thường Địa chỉ email dùng một lầnTrong một số trường hợp, người dùng có thể không muốn cung cấp địa chỉ email thực của họ khi đăng ký trên ứng dụng và thay vào đó sẽ cung cấp địa chỉ email dùng một lần. Đây là những địa chỉ có sẵn công khai không yêu cầu người dùng xác thực và thường được sử dụng để giảm lượng thư rác mà địa chỉ email chính của người dùng nhận được Việc chặn các địa chỉ email dùng một lần gần như là không thể, vì có một số lượng lớn các trang web cung cấp các dịch vụ này, với các tên miền mới được tạo ra mỗi ngày. Có một số danh sách có sẵn công khai và danh sách thương mại về các miền dùng một lần đã biết, nhưng những danh sách này sẽ luôn không đầy đủ Nếu các danh sách này được sử dụng để chặn việc sử dụng các địa chỉ email dùng một lần thì người dùng sẽ nhận được một thông báo giải thích lý do tại sao họ bị chặn (mặc dù họ có thể chỉ tìm kiếm một nhà cung cấp dùng một lần khác thay vì cung cấp địa chỉ hợp pháp của họ) Nếu điều cần thiết là các địa chỉ email dùng một lần bị chặn, thì chỉ nên cho phép đăng ký từ các nhà cung cấp email được phép cụ thể. Tuy nhiên, nếu điều này bao gồm các nhà cung cấp công cộng như Google hoặc Yahoo, người dùng chỉ cần đăng ký địa chỉ dùng một lần của riêng họ với họ địa chỉ phụĐịa chỉ phụ cho phép người dùng chỉ định một thẻ trong phần cục bộ của địa chỉ email (trước ký hiệu 5), thẻ này sẽ bị máy chủ thư bỏ qua. Ví dụ: nếu miền Integer.parseInt() 0 đó hỗ trợ địa chỉ phụ, thì các địa chỉ email sau đây là tương đương
Nhiều nhà cung cấp thư (chẳng hạn như Microsoft Exchange) không hỗ trợ địa chỉ phụ. Nhà cung cấp đáng chú ý nhất là Gmail, mặc dù có nhiều nhà cung cấp khác cũng làm như vậy. Một số người dùng sẽ sử dụng một thẻ khác cho mỗi trang web mà họ đăng ký, để nếu họ bắt đầu nhận được thư rác đến một trong các địa chỉ phụ, họ có thể xác định trang web nào đã rò rỉ hoặc bán địa chỉ email của họ Bởi vì nó có thể cho phép người dùng đăng ký nhiều tài khoản với một địa chỉ email duy nhất, một số trang web có thể muốn chặn địa chỉ phụ bằng cách loại bỏ mọi thứ giữa các ký hiệu 5. Điều này thường không được khuyến nghị vì nó cho thấy rằng chủ sở hữu trang web không biết về địa chỉ phụ hoặc muốn ngăn người dùng nhận dạng họ khi họ rò rỉ hoặc bán địa chỉ email. Ngoài ra, nó có thể được bỏ qua một cách tầm thường bằng cách sử dụng hoặc chỉ cần đăng ký nhiều tài khoản email với nhà cung cấp đáng tin cậy
Xác thực đầu vào có nghĩa là gì?Xác thực đầu vào là quá trình kiểm tra đầu vào mà ứng dụng nhận được để tuân thủ tiêu chuẩn được xác định trong ứng dụng . Nó có thể đơn giản như nhập đúng tham số và phức tạp như sử dụng biểu thức chính quy hoặc logic nghiệp vụ để xác thực đầu vào.
Mục đích của xác thực đầu vào là gì?Xác thực đầu vào được thực hiện để đảm bảo chỉ dữ liệu được định dạng đúng mới được đưa vào quy trình công việc trong hệ thống thông tin, ngăn dữ liệu không đúng định dạng tồn tại trong cơ sở dữ liệu và gây ra sự cố cho các thành phần hạ nguồn khác nhau
Làm cách nào để xác thực đầu vào của người dùng trong JavaScript?JavaScript để xác thực đầu vào của người dùng . var atpos = emailid. giá trị. Chỉ số("@"); . . var DOJ = new Date(inputDOJ. . nếu (người quản lý báo cáo. . nếu (người quản lý báo cáo. . nếu ((nhân viên |