Skip to content
All notes

Business applications

How to plan a secure, accessible custom business application

Arc & Relay website concept with service switches for lighting, electrical upgrades, vehicle charging, and repairs

A business application can hold customer details, employee activity, schedules, prices, documents, approvals, and connections to other systems. It can also become the main way people perform their jobs. That makes security and accessibility product requirements, not finishing touches. Good planning asks what data and actions are truly necessary, how misuse or failure could cause harm, which users face barriers, and how the organization will operate the system after release. No design can promise zero incidents or universal compatibility, but a disciplined lifecycle can reduce avoidable risk and make limitations visible before they become expensive emergencies.

The central idea

Plan security and accessibility as properties of the whole application lifecycle. Minimize data, model plausible harm, limit access by role, make sensitive actions explicit, develop with secure defaults, and test important workflows against WCAG 2.2 with both tools and human judgment. Then prepare restoration, incident response, barrier reporting, maintenance, and ownership before launch. These practices do not create a guarantee; they create evidence, accountability, and safer ways to operate and improve the system.

01

Inventory the data, users, actions, and consequences

Map each type of information the application will receive, create, infer, display, export, and delete. Identify where it comes from, why it is needed, which records it joins, who uses it, where it travels, how long it remains, and what happens when it is wrong or unavailable. Classify sensitivity in terms the business can act on. Payment credentials, health information, identity documents, precise locations, employee notes, and ordinary service history do not belong in one undifferentiated bucket.

Describe user groups and consequential actions: viewing a customer record, changing an appointment, approving a discount, exporting a list, issuing a refund, deleting data, or administering access. Consider mistakes, malicious use, stolen credentials, compromised integrations, unavailable vendors, and inappropriate insider access. A lightweight threat model should identify assets, trust boundaries, plausible abuse cases, controls, remaining risk, and an owner. Revisit it when a new integration, role, dataset, or public endpoint changes the system rather than treating it as a launch-only document.

  • Every collected, generated, shared, retained, exported, and deleted data type mapped
  • Business purpose and accountable owner recorded for sensitive information
  • High-consequence actions and trust boundaries identified by role
  • Abuse cases, controls, residual risks, and review triggers documented
02

Reduce exposure before adding protective controls

The safest unnecessary record is the one the application never collects. Remove fields that do not support a defined workflow, reporting need, contract, or applicable obligation. Prefer a provider token or reference over storing secrets that a specialized payment or identity service can protect. Limit production copies, redact logs, constrain exports, and use synthetic or properly controlled data in development. Define retention and deletion by record type, including backups and connected systems, with appropriate professional guidance where law or contracts apply.

Draw a data-flow diagram showing browsers, mobile devices, servers, databases, file storage, administrators, vendors, and integrations. Mark encryption boundaries, credentials, public entry points, and which party owns each control. Ask vendors for relevant security and accessibility information without assuming a certificate transfers responsibility to your application. Document where data is hosted, how accounts are recovered, what subprocessors or APIs matter, and what happens if the relationship ends. Minimization and clear boundaries make every later control more effective.

03

Design identity, permissions, and sensitive actions explicitly

Use individual identities and role-based access that begins with least privilege. Viewing, editing, approving, assigning, exporting, deleting, and administering are different capabilities. Consider record scope as well as action: a technician may need assigned jobs but not every customer; a supervisor may approve one region but not change system roles. Require multifactor authentication for privileged and sensitive access, provide secure recovery, limit sessions appropriately, and remove access promptly when roles or employment change.

Protect consequential actions with confirmation, context, and sometimes separation of duties. Show the record, effect, and destination before an export, refund, permission change, or irreversible deletion. Use server-side authorization rather than trusting a hidden button, rate-limit abuse-prone operations, and make errors safe. Audit important access and changes with actor, time, target, and result, while protecting the log itself. Monitoring should surface unusual behavior to a named responder; collecting an endless log that nobody reviews adds exposure without meaningful control.

  • Individual accounts and least-privilege roles defined from actual responsibilities
  • Server-side authorization applied to records and actions, not only screens
  • Multifactor authentication and secure recovery required for sensitive access
  • Consequential actions confirmed, attributed, monitored, and recoverable where possible
04

Build security into delivery and supplier management

Translate risks into testable requirements and acceptance criteria before implementation. Use reviewed architecture, maintained frameworks, secure defaults, parameterized data access, output handling appropriate to context, protected secrets, encrypted transport, and deliberate file-upload rules. Review code in proportion to risk and test authorization across roles, not only successful login. Automated checks can catch known dependency, secret, type, and configuration problems, but they complement design review and adversarial testing rather than proving the application is secure.

Maintain an inventory of important components, services, versions, licenses, and owners. Evaluate dependencies before adoption, restrict update authority, monitor supported security notices, and prioritize changes using exposure and business consequence rather than severity labels alone. Define how urgent fixes are tested and deployed and how a release can be reversed. The NIST Secure Software Development Framework and CISA secure-by-design principles both emphasize integrating security throughout development and making safe outcomes the default; the exact practices should be tailored to the application and team.

05

Use WCAG 2.2 and real users to guide accessibility

Set an accessibility target early, commonly WCAG 2.2 Level AA when appropriate, and translate it into design and engineering decisions. Use semantic structure, labeled controls, visible keyboard focus, logical order, sufficient contrast, adaptable layouts, meaningful errors, alternatives for non-text content, and status messages assistive technology can perceive. Avoid interactions that depend only on color, precise dragging, hovering, rapid timing, or a particular screen size. Authentication and cognitive load deserve the same attention as public-facing screens.

Include accessibility in prototypes, component definitions, content guidance, acceptance criteria, and the definition of done. Test keyboard-only use, zoom and reflow, screen-reader flows, errors, timeouts, tables, dialogs, uploads, charts, and high-consequence tasks. Automated tools find only part of the problem, so combine them with manual review and, when feasible, testing by people with relevant disabilities. Publish a clear support route and remediate barriers by impact. Conformance is not a one-time guarantee; content, integrations, and releases can introduce new obstacles.

  • Accessibility target and supported user journeys agreed during discovery
  • Semantic components, keyboard operation, focus, contrast, and errors specified
  • Automated checks combined with manual assistive-technology testing
  • Barrier reporting, prioritization, regression testing, and ownership established
06

Prepare launch, recovery, response, and continuous review

Before launch, review production configuration, domains, certificates, secrets, administrator accounts, role assignments, logging, alerts, retention, integrations, backups, and restoration. Test restoration to a separate environment and record the time and data loss actually observed rather than assuming a successful backup means recovery will work. Define acceptable recovery objectives with business owners, document a manual continuity procedure, and ensure staff know how to report a security concern or accessibility barrier without exposing more sensitive information.

Create an incident process with severity criteria, decision authority, technical and business contacts, evidence handling, containment options, customer or regulatory communication reviewed by appropriate advisers, and a post-incident improvement loop. Schedule access reviews, dependency updates, recovery exercises, accessibility regression tests, vendor reviews, and data-retention work. Track findings to an owner and due date. A secure, accessible application is an operating commitment: governance, training, maintenance, and transparent correction continue for as long as the system supports the business.

Ready to apply this to the business?

Tell us what exists, what needs to improve, and which outcome would make the work useful for your team or customers.

Start a project