This document provides security guidelines for the services using the Kakao Platform.
Kakao platform only allows the apps with the registered Android package, iOS bundle, or site domain information to access the Kakao SDK (Software Development Kit). Register the app information in [Platform].
To protect from attacks such as malicious redirects to other sites, Kakao passes an authorization code to the registered redirect URI only. Register a redirect URI in [Redirect URI], and pass the registered redirect URI for the value of redirect_uri
. Only when the value of redirect_uri
in the request matches the registered redirect URI, the authorization code is issued from the Kakao authorization server.
Use a client secret code to enhance security when issuing an access token. Pass the client secret code through the client_secret
parameter when calling the Get tokens or Refresh tokens API. Use the client secret code on the server-side (backend) only and keep it secret not to be revealed on the user's browser.
Set [Allowed IP address] to allow only the API requests sent from the predefined IP addresses.
To allow only the person registered as a team member to change the app settings, add a developer's account as a team member of the app. Since the Owner account has all permissions for the app, use a strong password for the Owner account not to leak the account information.
Set the role properly to grant different permissions to each team member depending on the usage purpose. For the Test app, manage registered team members to enhance the security since the test app is only available for the registered team members.
If the person with the Owner account has left the company, change the app owner. Remove the unnecessary team member by clicking [Expel].
The app keys are issued for each platform. The Kakao Platform verifies the API requests with the passed app key. In the case of the Admin key, use it only on the server-side (backend) not to be leaked since the admin key has all permissions.
If app keys are leaked, reissue the app keys with the Owner account of the app. Note that the reissue cannot be undone, and the old app keys are not available anymore.
Since an access token is used to make API calls, keep the access token secret not to be revealed. Use the refresh token on the server-side (backend) only.
We recommend setting the [Allowed IP address] to prevent others from calling an API with the stolen access token just in case the access token is revealed.
To prevent Cross-Site Request Forgery (CSRF) attacks, use the state
parameter when calling the Get authorization code API. The state
value of the request for the authorization code will be sent to the redirect URI to verify the request's source.
Pass a unique and random value through state
parameter for each Kakao Login request. And check if the value matches the value passed to the redirect URI. Note that the state
value must be stored somewhere that other third parties cannot access, such as sessions or cookies that are protected under identical resource policies. Refer to RFC 6749 10.12.
To enhance security, request for login regardless of whether the user is authenticated by presenting the Kakao Account Login screen. For this, set the prompt
parameter to login
for Get authorization code API.
To use the ID token through OpenID Connect, use the nonce
parameter when calling the Get authorization code API to protect from ID token replay attacks. Pass a unique and random value through nonce
parameter to compare in the ID token verification process.
To allow the API calls from the approved through firewalls only, add IP addresses of the Kakao API host used to call Kakao APIs, such as kauth.kakao.com
and kapi.kakao.com
.
To use callback functions such as Unlink callback, Kakao Talk Channel callback, and Kakao Talk sharing success callback, allow Kakao's IP addresses used to send callbacks.
To configure the preview for the service page in the Kakao Talk Sharing message, allow Kakao scrapping server's IP addresses to allow access to the service.
To protect all sensitive data transmitted to or from the application layer, comply with the following:
HTTPS
.For the redirect URI used to get an authorization code and tokens, use HTTPS
unless there is a special reason. Refer to RFC 6749 3.1.2.1
Encrypt all sensitive data stored as a file or database.
Do not save the user's information received from Kakao in the system log.
If a user signs up through the signup process of the service, and the user is identical to one of Kakao Login users, map the user onto the existing user data by complying with the following:
/v2/user/me
).Long
type. Implement a mapping functionality by considering that the number length may vary in the range.To protect users' personal information and to securely use the functions provided by Kakao Developers, comply with the Operating Policy.
/v2/user/me
) are also personal information that needs to be destroyed.To keep users' personal information up to date, use Security Event Subscription providing users' security status changes.
Kakao services, including Kakao SDKs, provide security updates. To strengthen security, check the latest version of Kakao SDKs periodically and use the latest version if possible.
Set consent items for the least data only required for the service, which a user will consent to when logging in.
To avoid phishing or misleading users into believing another service provides the app, register the app icon, app name, and company name (business, corporation, or organization name) that corresponds to the actual service in Kakao Developers.
When integrating Kakao Login into the service, comply with Design Guide so that users can recognize that they will sign up through Kakao Login.
We prohibit Kakao trademark infringement. Do not alter the app name, icon, and company name to something that may mislead users into believing your service is a Kakao service or partner. For example, do not add "for Kakao" to the app name or company name.
If your app's app keys are revealed, reissue the app key. Note that the reissue cannot be undone, and the old app keys are not available anymore. Replace the old app keys applied in the service app or website with the new app keys to make Kakao API calls. Otherwise, your API request fails.
Please report any security vulnerabilities in Kakao services through pf.security@kakaocorp.com
. For inquiries about the methods or ideas to enhance security for the services using Kakao Platform, contact us through DevTalk.