| By Douglas Crockford | Article Rating: |
|
| June 4, 2008 10:15 PM EDT | Reads: |
5,108 |
Yahoo! User Interface BlogCooperating applications, such as mashups, must be able to exchange objects with robust interfaces. An object must be able to encapsulate its state such that the state can be modified only as permitted by its own methods. JavaScript’s objects are soft and currently the language does not include any means to harden them, so an attacker can easily access the fields directly and replace the methods with his own.
Fortunately, JavaScript provides the means to construct durable objects that can perfectly guard their state by using a variation of the Module Pattern. You’ll recall that the Module Pattern makes it possible to make an object with privileged methods. Privileged methods are able to access the private state of the constructor’s closure. By adding one simple rule, we can easily generate secure objects:
A durable object contains no visible data members, and its methods use neitherThis is a template for a durable constructor:thisnorthat.
function durable(parameters) { var that = {} or the product of another durable constructor; var private variables; function method() { … }
that.method = method;return that; } Define all of your methods as private methods. The methods you choose to expose to the public get copied into that. None of the functions defined or inherited make use of
that or this. We can give the object created by the durable constructor to untrusted code. That code will be unable to get direct access to the private state. It can replace the methods with its own methods, but that only reduces the usefulness of the object to the attacker. It does not weaken or confuse the object. Each method is a capability. The object is just a collection of capabilities. Durable objects allow code from multiple (possibly untrusted) parties to cooperate. Durable objects can be expressed in a safe subset of JavaScript, such as ADsafe or Cajita.
[This appeared originally here and is republished by kind permission of the author, who retains copyright.]
Published June 4, 2008 Reads 5,108
Copyright © 2008 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Douglas Crockford
Douglas Crockford, an architect at Yahoo!, is an AJAXWorld regular. A technologist of parts, he has developed office automation systems, done research in games and music at Atari, and been both Director of Technology at Lucasfilm and Director of New Media at Paramount. He was the founder and CEO of Electric Communities/Communities.com and the founder and CTO of State Software, where he discovered JSON. He is interested in Blissymbolics, a graphical, symbolic language, and is developing a secure programming language.
- 4th International Cloud Computing Conference & Expo Starts Today
- Cloud Computing Journal Continues To Publish World's Best Cloud Analysts
- SOA World Magazine "Readers' Choice Awards" Voting Is Now Open
- Amazon Web Services Database in the Cloud
- CIA's Jill Tummler Singer Newest Ulitzer Author
- CSC's VP of Cloud Computing to Discuss Orchestration in the Cloud
- Cisco, EMC, VMware & Intel Form Acadia JV
- Plone and Drupal: Different Approaches, Different Results
- Virtualization Expo Call for Papers Deadline December 15
- Sun To Cut 3,000 Jobs, Blames EC
- Move Over BI, Here Comes PI - Performance Intelligence
- Qt DevDays 2009 - Munich
- 4th International Cloud Computing Conference & Expo Starts Today
- 1st Annual GovIT Expo: Letter from the Technical Chair
- SAP CTO to Speak at 4th International Cloud Computing Expo
- Cloud Computing Journal Continues To Publish World's Best Cloud Analysts
- Current Trends in the Data Management Market
- SOA World Magazine "Readers' Choice Awards" Voting Is Now Open
- Apps.gov Will Help Federal Agencies Embrace the Cloud: Vivek Kundra
- Is AT&T Apple's Achilles Heel?
- Oracle-Sun: Gartner Suspects EC of Ulterior Motives
- Amazon Web Services Database in the Cloud
- CIA's Jill Tummler Singer Newest Ulitzer Author
- CSC's VP of Cloud Computing to Discuss Orchestration in the Cloud
- Web Services Using ColdFusion and Apache CXF
- The Top 250 Players in the Cloud Computing Ecosystem
- Eclipse "Pollinate" Project to Integrate with Apache Beehive
- Red Hat Named "Platinum Sponsor" of Virtualization Conference & Expo
- Apache's Tomcat 5.5 is First Release Ever to Use Eclipse JDT Java Compiler
- Beehive Code Now Available in Apache
- An Introduction to Ant
- "Beehive" Now Officially an Open Source Project: Apache Beehive
- SourceLabs Completes Open Source Java Middleware Platform With Apache Tomcat
- Apache Announces Jetspeed 2.0 Open Source Enterprise Portal
- How to Build RIAs with Apache Derby and Grizzly Comet
- Apache Geronimo To Miss August 6 Launch Date Target







































