General guidelines for securityΒΆ

NOTE: This is still WIP

  • Use chroot: Where ever possible, use chroot after initialization. After chroot, one must chdir to / and drop privileges to an unprivileged user.

  • Sanitize inputs: Inputs must always be treated as untrusted; and must always be santized. Do not fire a database query, or perform any resource consuming operations unless all the inputs are valid. Handle any potential sql/no-sql and command injections.

  • API response: Any API should nevre reveal any unnessary information if the user is not authenticated/authorized to. Even the error messages should be carefully constructed not to leak any unnessary information.

  • Rate limiting: All APIs especially the ones requiring authentication/authorization must be rate limited.

  • Disable debugging information in production: Enabling debugging information in production will help an attacker to figure out the status of an attack. It should be disabled.