Mã khoá API là gì? ( Và chúng có an toàn không? )

Giao diện lập trình ứng dụng ( APIs ) cho phép các chương trình phần mềm tương tác với nhau, chia sẻ dữ liệu và tích hợp các chức năng của chúng. API tạo điều kiện cho các cuộc trò chuyện giữa các phần mềm bị gỡ bỏ, và là công nghệ đằng sau những kết hợp mạnh mẽ mà bạn sử dụng mỗi ngày.

Tuy nhiên, không giống như một cuộc đối thoại trực tiếp, một ứng dụng sẽ khó xác minh liệu ứng dụng mà nó đang nói chuyện có phải là người mà nó tuyên bố là. Vì chúng thường tiết lộ thông tin riêng tư và nhạy cảm, các API cần cách xác định khách hàng trước khi cho phép họ thông qua. Nếu không, sẽ là một cuộc cá cược lớn.

Mật mã API là một biện pháp an ninh như vậy chúng hoạt động như một thẻ ID cho khách hàng thực hiện yêu cầu API, help APIs assign the right access permissions, cũng như theo dõi cách sử dụng dữ liệu của họ.

Nếu bạn làm việc với API hoặc tích hợp tiếp thị, anh nên biết các khoá API là gì, nơi chúng phù hợp với an ninh API, và tại sao chúng không phải là lớp bảo vệ duy nhất mà anh nên nghĩ tới. Chúng ta hãy giải thích.

Mật khẩu API là gì?

Một khoá API là một nhận dạng được gán cho một ứng dụng API, được sử dụng để xác thực một ứng dụng gọi API. Nó thường là một chuỗi sốphanumer duy nhất được bao gồm trong cuộc gọi API, mà API nhận và xác thực. Nhiều API sử dụng các khoá để theo dõi việc sử dụng và xác định các yêu cầu không hợp lệ hoặc độc hại.

Nói chung, các khoá API phục vụ hai chức năng chính trong yêu cầu API :.

  • Tính xác thực dự án : Mật mã API xác định ứng dụng thực hiện yêu cầu đến API nhận được yêu cầu. Mỗi dự án có một khoá độc đáo để phân biệt nó với các dự án khác
  • Uỷ quyền dự án : Mã API cho phép API xem ứng dụng yêu cầu có quyền sử dụng API hay không và các dịch vụ API mà nó có thể truy cập, Ngay cả khi ứng dụng có thể truy cập vào API, nó chỉ được phép sử dụng một tập hợp hạn chế các dịch vụ API

Dựa trên khoá API được cung cấp trong một yêu cầu, API kiểm tra khoá với cơ sở dữ liệu khách hàng của nó, sau đó hoặc chấp nhận hoặc từ chối yêu cầu. Nếu yêu cầu được chấp nhận, aPI cho phép khách hàng truy cập vào dữ liệu và chức năng của nó dựa trên quyền truy cập khách hàng, cũng được liên kết với khoá API.

Ngoài ra, chủ API sử dụng các khoá API để theo dõi hoạt động của API, bao gồm các loại yêu cầu và khối lượng yêu cầu đến từ các khách hàng cá nhân. Vì mỗi yêu cầu có một khoá liên kết, các chủ API có thể lọc theo khoá và xem tất cả các yêu cầu từ một khách hàng cụ thể.

Khả năng giám sát này đặc biệt quan trọng khi bảo vệ API khỏi giao thông gây hại. Hacker thường xuyên nhắm mục tiêu vào API thông qua nhiều phương pháp, chẳng hạn như giả thông tin để tiêm mã độc hoặc vượt qua máy chủ API với các yêu cầu. Với các khoá, một API có thể loại bỏ lưu lượng bot vô danh hoặc chặn các yêu cầu từ một người dùng cụ thể nếu cần.

Điều quan trọng cần lưu ý là các khoá API xác định các yêu cầu từ dự án và ứng dụng, không phải từ người dùng cá nhân. Một khoá API nói với API dự án yêu cầu đến từ, nhưng nó không thể xác định người dùng cụ thể với quyền truy cập vào dự án. Đây là một hạn chế an ninh đáng kể được thảo luận tốt hơn về sau.

Cách sử dụng mã API

Các API thường yêu cầu các nhà phát triển để có được một khoá trước khi thực hiện yêu cầu. Quá trình cần được ghi lại trên trang web của các nhà phát triển API và cung cấp mọi thông tin cần thiết để bắt đầu.

Trong hầu hết các trường hợp, bạn cần đăng ký tài khoản nhà phát triển bằng email và các thông tin khác. Sau đó, bạn sẽ được yêu cầu đăng ký dự án và nhập bất kỳ thông tin dự án nào mà chủ API cần biết.

Từ đó, bạn sẽ nhận được ít nhất một khoá API, một chuỗi duy nhất của các nhân vật được tạo ngẫu nhiên được liên kết với dự án của bạn. Nó sẽ trông như thế này :.

 

Bạn có thể nhận được hai khoá, một khoá được dán nhãn là khoá công khai và khoá riêng tư. Một khoá công cộng có thể được chia sẻ với các cộng tác viên và bị hạn chế trong việc truy cập vào các dữ liệu và chức năng của API. Không nên chia sẻ mật khẩu riêng với bất kỳ ai, nó xác định rõ ràng hơn về dự án và cung cấp quyền truy cập vào tài khoản nhà phát triển của bạn, cộng với tất cả dữ liệu của anh.

Đối với việc bao gồm khoá API trong yêu cầu, hãy tham khảo tài liệu về các API để đặt khoá của bạn thường xuyên, nó nằm trong tiêu đề yêu cầu :.

 

Hoặc viết bằng chuỗi câu hỏi theo phương thức yêu cầu :.

 

Mã API có an toàn không?

Web API là mục tiêu phổ biến của tấn công mạng vì chúng truyền dữ liệu nhạy cảm giữa các ứng dụng bao gồm thông tin đăng nhập, thông tin cá nhân, và các giao dịch tài chính trên internet. Để chống lại điều này, các API web cần phải rất an toàn mọi lúc.

Các khoá API có thể xác định một dự án vào API và xác định nguồn tài trợ mà dự án có thể truy cập. Tuy nhiên, các chuyên gia không coi các khoá API là đủ an toàn cho riêng họ. Đây là một vài lý do :.

  • Các khoá API không thể xác thực người dùng cá nhân thực hiện yêu cầu, chỉ có dự án hoặc ứng dụng gửi yêu cầu
  • Các khoá API giống như mật khẩu, chúng chỉ có hiệu quả khi chủ sở hữu bảo quản an toàn, nếu một khoá rơi vào tay sai, nó có thể dễ dàng bị khai thác
  • Vì các khoá API hiếm khi hết hạn, hacker có thể sử dụng khoá vô hạn, trừ khi chủ các khoá tái tạo hoặc vô hiệu hoá khoá

Vì những lý do này, các API phổ biến ngày nay cũng sử dụng xác thực và uỷ quyền người dùng. Quá trình xác thực người dùng kiểm tra xem cá nhân thực hiện yêu cầu ( không chỉ đơn xin phép ) là người họ nói họ là ai. Uỷ quyền người dùng xác minh rằng người này được phép thực hiện yêu cầu họ đã thực hiện.

Tính xác thực và uỷ quyền người dùng được thực hiện với các thẻ xác thực, an toàn hơn các khoá API. Giao thức O Auth là tiêu chuẩn ngày nay về xác thực và uỷ quyền người dùng, cho phép người dùng xác minh danh tính của họ mà không cung cấp mật khẩu. Đây là cùng một công nghệ đằng sau dấu hiệu đơn, trong đó người dùng có thể đăng nhập vào một ứng dụng ( như LinkedIn ) thông qua ứng dụng khác ( như Google ).

O Auth là một quá trình phức tạp hơn mà xứng đáng có một bài viết riêng của nó, vì vậy đây là một người giải thích chi tiết về cách O Auth hoạt động.

Cách để lưu trữ các khoá API an toàn

Mặc dù có những hạn chế, các khoá API vẫn phổ biến và hữu ích trong việc xác định các dự án gọi. Rất có thể bạn cần theo dõi một hoặc nhiều ứng dụng khi làm việc với ứng dụng API.

Các khoá API hoạt động rất giống như mật khẩu và nên được lưu trữ và bảo vệ như vậy. Sau đây là một số bước cơ bản mà bạn có thể thực hiện để hạn chế nguy cơ bị đánh cắp chìa khoá :.

  • Đừng viết chìa khoá của bạn ở nơi công cộng, như trên giấy dán hoặc trong một tập tin trên máy tính công cộng. Bạn có thể truy cập an toàn vào khoá trong tài khoản của nhà phát triển
  • Cẩn thận đừng vô tình để lộ khoá của bạn khi làm tài liệu dự án của bạn, chẳng hạn như chụp ảnh màn hình, tải lên kho lưu trữ công cộng hoặc vào URL
  • Đừng viết mã API trực tiếp vào chương trình của bạn, vì bất kỳ ai truy cập vào tập tin nguồn của bạn cũng có thể thấy mã của bạn
  • Trước khi chia sẻ mã API, bạn cần tái tạo lại và dán nhãn là mã mới nhất được chia sẻ
  • Chia sẻ các khoá API qua email
  • Luôn sử dụng HTTPS/SSL cho yêu cầu API của bạn, một số ứng dụng sẽ hiển thị yêu cầu của bạn nếu bạn không sử dụng nó
  • Phân bổ một khoá API độc đáo cho mỗi dự án và gắn nhãn cho chúng. Nếu bạn phát hiện ra một khoá đã bị xâm nhập, bạn có thể tái tạo hoặc vô hiệu hoá nó mà không ảnh hưởng đến các dự án khác của bạn

Ví dụ về chìa khoá API

Để rút ra bài học này, đây là một số ví dụ về các API phổ biến và cách chúng thực hiện các khoá API cho an ninh.

Mật khẩu API Google Maps

Nền tảng Google Maps sử dụng các khoá API để bảo đảm các yêu cầu về dữ liệu bản đồ. Sau khi thiết lập một tài khoản nhà phát triển với Google, bạn có thể dễ dàng tạo một khoá ứng dụng Google Maps tại khu vực thông tin đăng nhập của bạn.

Google cũng khuyến khích người dùng hạn chế các khoá API của họ đến các miền được chấp nhận và cho phép bạn làm điều này trong khu vực thông tin tín dụng. Ngoài ra, API Google Maps chỉ chấp nhận các yêu cầu được bảo mật với HTTPS.

Google cung cấp ví dụ sau về việc một khoá API trông như thế nào trong yêu cầu :.

 

Bạn muốn đặt bản đồ Google tương tác trên trang hoặc ứng dụng của bạn, hãy đọc hướng dẫn bắt đầu với ứng dụng Google Maps.

Mật khẩu API stripe

Để xác thực các yêu cầu đến API của mình, dịch vụ xử lý thanh toán stripe cung cấp các khoá API cho mỗi tài khoản của nhà phát triển. Cụ thể, nó phát hành hai loại khoá API : xuất bản, đây là khoá công khai liên kết tài khoản của anh với stripe, và bí mật, chìa khoá riêng tư của anh cho phép anh yêu cầu xoá bỏ mọi thứ.

Stripe phát hai cặp khoá có thể xuất bản và bí mật, một cho ứng dụng trực tiếp của bạn và một cho thử nghiệm API. Đây là tổng số bốn khoá của bạn. Chìa khoá API thử nghiệm bao gồm dấu gạch dưới.

Nguồn ảnh.

Stripe cũng cho phép người dùng tạo các khoá với các hạn chế lớn hơn nếu bạn thực hiện API trong một dịch vụ vi mô.

Giúp bảo mật yêu cầu của bạn bằng các khoá API

Mặc dù các khoá API không phải là biện pháp an ninh API duy nhất ( hoặc thậm chí tốt nhất ), chúng vẫn hữu ích cho các nhà cung cấp API và quan trọng cho việc xác thực các tích hợp API.

Khi tích hợp API phát triển và lan rộng giữa các ứng dụng mới và thiết bị thông minh, một điều sẽ thay đổi : sẽ luôn có những người muốn ăn cắp và khai thác dữ liệu cá nhân. Đó là lý do tại sao bất kỳ API có uy tín nào truyền tải thông tin nhạy cảm sẽ bao gồm các khoá API ( và nhiều hơn nữa ) trong kho bảo mật của nó.

 

Viết một bình luận