FSDH Developer Documentation
Create a Support TicketFSDH Merchant Bank
  • Getting Started
    • Overview
    • Quick Start
  • Integration Guide
    • Base URLs
    • Merchant Web Hook
    • Test Parameters
    • Response Codes
    • Authentication
  • Going Live
    • Best Practices
    • Going Live
      • Go-Live Schedule
  • FSDH 360
    • Dynamic Virtual Accounts
      • Assigned dynamic accounts
      • Unassigned dynamic accounts
      • Dynamic accounts by collection account number
      • Dynamic collection account balance
      • Dynamic accounts by BVN
      • Get a dynamic FSDH 360 account
      • Create a Dynamic Virtual Account
      • Update dynamic account
      • Unassign dynamic account
      • Transaction history
    • Static Virtual Accounts
      • Get static FSDH 360 accounts
      • Create static virtual accounts
      • Update static account
      • Get a static account
      • Link static to collection account
      • Query collection account balance
      • Link static accounts to BVN
      • Virtual account transaction history
    • Merchant Virtual Codes
      • Merchant Codes by notification styles
      • Merchant Codes by commission deduction types
      • Merchant Codes by authorization types
      • Account enquiry
      • Create merchant virtual codes
      • Get merchant virtual code
      • Update merchant code
      • Get merchant by code
      • Pending merchant codes
      • Authorized merchant codes
      • Rejected merchant codes
      • Download merchant codes
      • Update authorized merchant codes
      • Update rejected merchant codes
      • Merchant codes for account collection
      • Merchant codes by collection account
      • Update merchant codes for collection account
      • Link merchant codes to collection accounts
      • Pending merchant codes collection account
      • Authorized merchant codes collection account
      • Rejected merchant codes collection account
      • Deleted merchant codes collection account
      • Delete merchant codes for a collection account
      • Authorize merchant codes for a collection account
      • Reject merchant codes for a collection account
      • Get all merchant codes
    • Error Response Codes
  • FSDH Pay
    • FSDH PAY
      • Balance enquiry
      • Banks list
      • Funds Transfer
        • Transfer query
        • Funds Transfer History
        • Perform Transfers
      • Name Enquiry
        • Name enquiry (FSDH)
        • Name enquiry (NIP)
  • FSDH Identity
    • FSDH Identity
      • Multiple BVN
      • Single BVN
        • Send OTP
        • Validate OTP
        • Birthday date
        • Get single BVN
      • BVN watch list check
      • Verify multiple BVN
      • Verify single BVN
        • Verify single BVN using birth date
  • Product Update
    • Upcoming changes
      • Change log
  • Contact Us
    • 📞Contact us
Powered by GitBook
On this page
  1. Going Live

Best Practices

Suggested security practices

Security Recommendations

API Management

Verify that your app meets these requirements for managing your API Keys

  • Client ID & Client secret should not be hard coded in the codebase.

  • API calls requiring your Bearer Token should never be initiated from a client (browser/mobile app). It should be done from the backend/server part of the application

  • Client ID & Client secret should be stored in environmental variables or secrets manager.

Authentication

  • Ensure a strong password policy is enforced e.g. minimum of 8 alphanumeric characters, an upper case, a special character

  • Input validation is in place during login

  • Implement controls against brute-force - account lockouts, second-factor authentication and so on.

  • Store database credentials securely using secrets manager preferably.

Cookie Management

  • Ensure all app session cookies have the following attributes set

  • Secure

  • HTTP only

  • Upon the user logging out, the user’s session must be terminated server-side, and any client-side session tokens should be cleared and not cached on the user’s machine

  • Any session tokens must be stored within session cookies and transported only within HTTP cookie headers

Session Management

  • Session timeouts should be configured on the server

  • Session duration should be limited to a maximum of 10 hours, after which the user must be required to authenticate again

  • Implement an idle session timeout

  • Deny concurrent sessions

  • Ensure session tokens are generated using a Random Number Generator (RNG) cryptographic provider so it cannot be easily predictable.

Session Termination

  • A clearly accessible button must exist which allows users to log out of the application, which in turn ends the session on the server

  • Application sessions must be invalidated at the server-side

  • Log out function must effectively destroy all session tokens and render them useless.

Handling Sensitive information

  • Securely exchange encryption keys - Ensure key exchanges are performed over a secure channel (TLS 1.2 and TLS 1.3)

  • Limit the use and storage of sensitive data - Ensure sensitive data are not unnecessarily transported and stored. Where possible use abstract identifiers to reduce data exposure risk.

  • Encryption of sensitive data at rest

Error Handling and Accountability

  • Ensure to log all privileged changes

  • Log all user (customer) and administrative activities

  • Log all access to sensitive data

  • When encountered with an unhandled exception, display generic messages to the end-user. Do not reveal details about the internal state of your application eg. database errors, app server errors etc

  • Store logs securely and follow international standards for log retention

Input and Output Forms

  • All input (user and service) must be validated only on the server-side in addition to any client-side validation to permit only the characters required and field length necessary

  • All output back should be encoded

  • With proper input validation and output encoding, applications should not be susceptible to cross-site scripting, either stored or reflected. This includes all headers, cookies, query strings, form fields and hidden fields

  • Create a whitelist of acceptable characters to be used by the application

  • Ensure proper validation is done for files that are uploaded

  • Use parameterized SQL queries

Application Server

  • Ensure caching has been disabled on all SSL pages and all pages that contain sensitive data by using value no-cache and no-store instead of private in the Cache-Control header

  • All OS, web server and app server security patches are up to date at this time, and new patches are applied in a commercially reasonable time frame after they are made available by the hardware and software vendors

  • SSL must be configured to support only TLS version 1.2 or higher.

  • HTTPS is enforced on all pages and endpoints of your application

  • The app web server must be configured to disable the TRACE and other HTTP methods if not being used

Vulnerability and Security Assessment

Ensure your application is secured against this non-exhaustive list

  • Cross-Site Request Forgery

  • Cross-Site Scripting reflected and stored cross-site scripting

  • SQL Injection

  • XML Injection

PreviousAuthenticationNextGoing Live

Last updated 2 years ago