This guide assumes you’re creating a wallet using a web browser extension, but the same principles apply
to integrate our APIs for Mobile or Desktop wallets.Let us know if you’d like to see a guide for a specific
use-case that’s not covered here.
Overview
The goal of integrating ChainPatrol’s API into your wallet is to prevent users from interacting with a malicious website that is intended to steal their funds or credentials. To achieve this goal, you will need to do the following:- 🔍 Detect when a user has visited a new website
- 🥷 Check if the website is malicious with the ChainPatrol API
- ⚠️ Display a warning to the user if the website is malicious
- 🤞 Allow the user to continue if they wish
- 😅 Allow the user to report a false positive
Detecting navigation to a new website
In the code examples below, we’re using Mozilla’s
webextension-polyfill to
smooth out the differences between the Chrome and Firefox APIs.
(Recommended) Option 1: Use the browser.onBeforeNavigate API
This approach requires adding the webNavigation permission to your manifest.json file:
onBeforeNavigate event in your Background script:
Option 2: Use the browser.tabs.onUpdated API
This approach requires adding the tabs permission to your manifest.json:
onUpdated event in your Background script:
Option 3: Get the current URL from a content script
This option assumes you already have a content script that runs on every page, ie. you have something like this in yourmanifest.json:
window.location object without needing to add any additional permissions.
Checking if the website is malicious
Once we know the user has visited a new website, we can check if the website is malicious with the ChainPatrol API.Displaying a warning to the user
If the website is malicious, you should display a warning to the user. Our recommended approach is to redirect the user to a warning page which will let the user know that they are about to visit a malicious website, and give them the option to safely exit, continue, or report a false positive if they believe the website is not malicious. There are two options for creating the warning page:ChainPatrol's Hosted Page
Recommended option
ChainPatrol's Hosted Page
Recommended option
ChainPatrol hosted Page
The ChainPatrol hosted page takes care of:- Displaying a warning to the user
- Allowing the user to continue if they wish
- Allowing the user to report a false positive
Using the warning page
When you have determined that the site is malicious, you can redirect the tab to the ChainPatrol warning page. You need to pass theoriginUrl query parameter to the warning page so that it can display the URL to the user.Allowing the user to Continue
To allow the user to ignore the warning and continue to the potentially malicious site, listen for theCHAINPATROL_CONTINUE_AT_OWN_RISK message in your background script
and add the domain to a list of domains to ignore.It’s up to you how you want to store this data, but we recommended using the
browser’s storage APIs, such as:
chrome.storage
for Chrome extensions.
Whitelabeling the warning page
If you want to customize the look and feel of the warning page, reach out to us and we can work with you to create a custom branded warning page with your logo and colors.Custom Page
Use if you want full control/branding
Custom Page
Use if you want full control/branding
Custom Page
Displaying the warning
We can display the warning by reading theoriginUrl query parameter:Allowing the user to Continue
If the user wishes to continue, we can allow them to do so by adding a button to the warning page that will redirect them back to the original websiteTo prevent the user from seeing the warning again, we can add the domain to a
list of domains to ignore. It’s up to you how you want to store this data, but
we recommended using the browser’s storage APIs or equivalent on other
platforms.
Allowing the user to report a false positive
If the user believes the website is not malicious, we can allow them to report a false positive by adding a button to the warning page that will redirect them to the ChainPatrol dispute page.Conclusion
We’ve now added a layer of security to your wallet by protecting users from scams and phishing.Next Steps
- Read the ChainPatrol API Documentation