WebFund 2014W Lecture 15: Difference between revisions

From Soma-notes
Line 47: Line 47:
** input becomes output semi-directly
** input becomes output semi-directly
** (incorporated into web pages)
** (incorporated into web pages)
* one JavaScript context per web page
* DOM is accessible in it => all of the web page is accessible
* easy to trust client, easy to forget "redundant" checks

Revision as of 19:21, 7 March 2014

Web Security

Security is (roughly):

  • confidentiality
  • integrity
  • availability

Cryptography (SSL, secure hashes) are tools for achieving security. But they are not the only ones.

Security really matters for web applications because, by design, most are accessible by anyone in the world.

Threat Models

  • what are the attacker goals?
  • how may they achieve them?
  • in other words, how are you in danger? What are the risks?

There are always attacks outside of your threat model.

Attacker Goals

  • steal private information (e.g., financial)
  • reduce availability
    • impact reputation
  • perform malicious operations (using existing functionality)
    • steal money
    • blow up a reactor
    • use application to achieve attacker's goals
  • monitor usage (spying)
  • data tampering

Points of Vulnerability

What access does the attacker have?

  1. hardware (chips)?
  2. physical/virtual access to machine?
    • burglary
    • "insider attacks": sysadmins, cloud providers
    • Digital Rights Management (DRM)
  3. malicious input

Last is most significant for web security

Input validation

  • hard because application interface/front end is under attacker control
  • hardest use case: user-generated input
    • input becomes output semi-directly
    • (incorporated into web pages)
  • one JavaScript context per web page
  • DOM is accessible in it => all of the web page is accessible
  • easy to trust client, easy to forget "redundant" checks