Dealing with Online Payments

Any application which needs to take payments online needs to be reviewed for its compliance under Payment Card Industry Data Security Standard (PCI DSS). Security requirements vary depending on the type of information processed, what data (if any) is stored by the application, and the yearly dollar amount payments to be processed.

Steps for Compliance

Document all cardholder data flows and identify all systems that store, process or transmit cardholder data prior to beginning any assessment activities.

Develop a system inventory

An inventory of all systems that store, process, and/or transmit cardholder data must be maintained. The following information at a minimum should be maintained in the inventory:

  • System name
  • Cardholder data stored (list fields)
  • Reason for storage
  • Retention period
  • Protection mechanism (e.g., hashing, encryption, or truncation)

Assess your compliance

The Core PCI Requirements (as per: http://pcisecuritystandards.org)

  1. Build and Maintain a Secure Network
  1. Install and maintain a firewall configuration to protect cardholder data
  2. Do not use vendor-supplied defaults for system passwords and other security parameters
  1. Protect Cardholder Data
  1. Protect stored cardholder data
  2. Encrypt transmission of cardholder data across open, public networks
  1. Maintain a Vulnerability Management Program
  1. Use and regularly update anti-virus software or programs
  2. Develop and maintain secure systems and applications
  1. Implement Strong Access Control Measures
  1. Restrict acces to cardholder data by business need to know
  2. Assign a unique ID to each person with computer access
  3. Restrict physical access to cardholder data
  1. Regularly Monitor and Test Networks
  1. Track and monitor all access to network resources and cardholder data
  2. Regularly test security systems and processes
  1. Maintain an Information Security Policy
  1. Maintain a policy that addresses information security for all personnel

Common Mistakes

Along with the previously documented development guidelines there are a few common mistakes made when developing applications which accept payments which run afoul of these guidelines.

Storing credit card information in plain text

Any storage of credit card avoided unless it is core to the business functionality. Third-party services for handling tokenization of the card information should be used. These services are typically cheaper than the cost of an annual audit required to stay compliant without them.

Default passwords not changed

Your application is only as secure as its weakest link. Using the default password for services gives low effort entry to potential attackers.

Poorly coded websites

Insecure websites are insecure.

Lack of monitoring and logging

It is hard to detect problems or intrusions without some kind of monitoring in place.

Not using SSL for payment page

This should go without saying but any application which deals with payment information needs to be served over SSL.

Logging payment information into log files

Bugs and tracebacks happen but when they contain sensitive information it is a much bigger problem. In an ideal world credit card information would never pass through the server, even in memory, through the use of third-party providers and appropriate tokenization.

Missing security patches

Software must be kept up to date with the latest security patches. That includes the application code and its dependencies along with the operating system and related services running on the server.