For the complete documentation index, see llms.txt. This page is also available as Markdown.

Recommendations

paymail lives on the public web. As such, it is recommended that standard defensive mechanisms are deployed. These include, but are not limited to:

  • maintain access logs

  • prevent information leakage, including through error messages

  • do not keep sensitive information on internet-connected servers

  • place limits on everything, even if they are high

    • rate limits

    • maximum message size limits

    • bad request limits (leading to a ban)

      • malformed requests

      • suspicious requests

  • secure the host operating system and environment

  • operate under the principle of least privilege

  • do not trust any input to any API endpoint

    • assume all API calls are hostile until proven otherwise

    • sanitize everything

  • keep software/library/dependency versions up to date

There are additional concerns that are specific to the paymail service:

  • consider the meanings of request bodies

    • whilst it might be normal for an online retail store to receive a high volume of payment destination requests and pay to email posts, consider the amounts being paid. a valid transaction might not count towards some sort of ban limit, but maybe it should if the service receives thousands of dust transactions a second

    • infinite-loop payment destination requests might be valid but can lead to resource exhaustion, both CPU (during key derivation) and address space (individual Type 2 HD Wallet derivation paths, for example, are not infinite)

    • consider if the request is really probing for leaked information, rather than performing its intended function

  • consider risks to funds

    • use xpub or nChain public key derivation for payment destination discovery. do not keep wallet seeds or private keys in paymail services, as these are a gold mine waiting to be stolen by a malicious adversary

Last updated

Was this helpful?