Internet DRAFT - draft-cheney-safe
draft-cheney-safe
5 August, 2009
Network Working Group A. Cheney
Internet Draft Sabre Inc.
Category: Standards Draft August 2009
SAFE (Server-side Asynchronous Framework Execution) Scripting Method
draft-cheney-safe-04
Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79. This document may contain material
from IETF Documents or IETF Contributions published or made publicly
available before November 10, 2008. The person(s) controlling the
copyright in some of this material may not have granted the IETF
Trust the right to allow modifications of such material outside the
IETF Standards Process. Without obtaining an adequate license from
the person(s) controlling the copyright in such materials, this
document may not be modified outside the IETF Standards Process, and
derivative works of it may not be created outside the IETF Standards
Process, except to format it for publication as an RFC or to
translate it into languages other than English.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on February 1, 2010.
Copyright Notice
Copyright (c) 2009 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents in effect on the date of
publication of this document (http://trustee.ietf.org/license-info).
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document.
Cheney Standards Draft [Page 1]
Internet-Draft SAFE Scripting Method August 2009
Comments
Please send comments to austin.cheney@us.army.mil
Abstract
SAFE Scripting Method is a model for allowing application
interactivity in email while simultaneously elminating security
vulnerabilities associated with client-side scripting.
Introduction
SAFE (Server-side Asynchronous Framework Execution) Scripting Method
has only two intended objectives:
1) This model provides a method to allow behavior, or event-oriented,
execution of programmatic application code across email. Such code
will be referred to as script.
2) This models seeks to provide an alternative to client-side
scripting of world wide web (WWW) documents free of security
vulnerabilities with cross-site scripting (XSS) and cross-site
request forgery (CSRF).
Each of these objectives is mutually necessary for the functional
existence of the other. The SAFE model refers to the model of steps
necessary to achieve the SAFE Scripting Method as explained below.
Requirements
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [34].
Three externally defined requirements are necessary for the
implementation of this proposed model. One additional requirement is
necessary and will be further expanded later in this document. The
external requirements MUST NOT be defined by this document.
1) The first requirement is a standardized and well understood
document structure definition, such as a markup language, that
conforms to the conventions of the standardized Document Object Model
(DOM) and accurately describes data intended for transmission across
SMTP while simultaneously representing sufficient current common
practices of representing or describing data intended for
distribution as email or SMTP, which MUST NOT be (X)HTML. This
requirement shall be arbitrarily referred to as 'markup' for the
remainder of this document.
2) The second requirement is a standardized and widely adopted
transmission scheme that reflects the primitive model defined by RFC
5321 while simultaneously respecting the rules and constraints
defined by the document structure noted in Requirement 1, markup.
This requirement shall be arbitrarily referred to as 'protocol' for
the remainder of this document and MAY be representitive of RFC 5598.
Cheney Standards Draft [Page 2]
Internet-Draft SAFE Scripting Method August 2009
3) The third requirement is a certificate authority granting
organization that is entirely external to any organization providing
Requirement 1 (markup) or Requirement 2 (protocol). This requirement
shall be arbitrarily referred to as CA, short for certificate
authority, for the remainder of this document.
4) The third requirement is the standardization and adoption of a new
programming language object, XMLSmtpPush object, which is intended to
offer comparable functionality to the XMLHttpRequest object available
on the WWW.
Elaboration of intended objectives
Allowing script execution in email is absolutely necessary to provide
a minimal expectation of user experience and interaction, as well as
promoting the advancement of data and commerce exchange. Behavior
and event oriented scripting in email must not be compared with
similar functionality available on WWW. On the WWW such scripting
executes locally to the end user, which allows a degree of freedom
and rapid programmatic response not available to this model at the
cost of frequent security violations.
In this model scripts are executed on an email server, a mediating
agent of the data transmission that is never an end point of that
transmission. Execution occurs in response to an event, specific
expected data, a defined document feature, or other programmatic
condition. This means the code executed by any script language must
be pushed back to the initiated user as either a new document or as
an asynchronous alteration to an established document.
The reason why scripts must be executed on the server and not the
client is to eliminate security vulnerabilities associated with
script execution. Understandably, this opens new and more difficult
to detect security vulnerabilities where compromises violate
expectations of privacy. Email is inherently private and it is the
liability of the distant server's owner to ensure data that passes
through that mail server remains private through best current
security practices.
Models established by RFC 5321
Model for SMTP Use (Client/Server Model)
+----------+ +----------+
+------+ | | | |
| User |<-->| | SMTP | |
+------+ | Sender- |Commands/Replies| Receiver-|
+------+ | SMTP |<-------------->| SMTP | +------+
| File |<-->| | and Mail | |<-->| File |
|System| | | | | |System|
+------+ +----------+ +----------+ +------+
Sender-SMTP Receiver-SMTP
Cheney Standards Draft [Page 3]
Internet-Draft SAFE Scripting Method August 2009
Primitive model of email transmission between
clients using the same server
+---------------------------------+
| |
+------------+ | | +---------+
| Initiating | | Mail- | | Distant |
| Client |<-->| Server |<-->| Client |
+------------+ | | +---------+
| |
+---------------------------------+
Primitive model of email transmission between unrelated networks
+-----------+ +-----------+
| | | |
+------------+ | Mail- | | | +---------+
| Initiating | | Server | | Distant | | Distant |
| Client |<-->| of |-------->| Mail- |--->| Client |
+------------+ | Local | | Server | +---------+
| Domain | | |
| | | |
+-----------+ +-----------+
SAFE Model
The SAFE model exists to allow transmission interactivity through
execution of script opposed to programmatic interactivity that exists
only through use of client-side programming language execution in
WWW. In other words, the SAFE Model exists to provide interaction
using dynamic communications that do not result in new or separate
content documents that would appear to be additional emails. The
mail clients MUST be expected to execute changes to the DOM of an
establish document but MUST NOT process any other instructions with
regard to this model or transmission interaction. This is secure
because changes to the DOM only allow for the deletion, addition, or
alteration to text or markup code data to a document only. The SAFE
model expects that all communications will be encrypted as a result
of assymmetric key exchange.
SAFE - Step One
In the SAFE Model the first step is to establish authorization
between the two communicating clients to ensure the distant client
is not a forged identity or spoofed address. If authorization is not
established encryption could be exist with a fraudulent identity. A
CA, as defined in Requirement 3, is necessary to ensure the integrity
of the authorization process.
Cheney Standards Draft [Page 4]
Internet-Draft SAFE Scripting Method August 2009
The distant client MUST respond with a digital certificate signed
with a digital signature. Upon certificate receipt the initiating
client MUST contact the issuing CA to recieve a key to decrypt the
digital signature. Since this key can only decrypt signatures signed
with a private key stored at the distant user authorization is
verified. This CA MUST NOT be on the same domain as either client
address or any email server mediating in the transmission in order to
provide an uncompromised validation of trust. This process SHOULD be
transparent to the user of the originating client.
+-----------+ Signature
| | Public +------------+
+------------+ | Third | Key | Initiating |
| Initiating |------->| Party |---------->| Client |
| Client | | CA | +------------+
+------------+ | | Decrypt
^ +-----------+ Signature
|
+-----------+ +-----------+
| | Signed | |
| Mail- | Digital | | +---------+
| Server | Cert | Distant | | Distant |
| of |<--------| Mail- |<---| Client |
| Local | | Server | +---------+
| Domain | | |
| | | |
+-----------+ +-----------+
SAFE - Step Two
The second step is for both communicating clients to share public
keys and engage in asymmetric encryption only after authorization is
verified using Step One. If the initiating client inserts their
public key in the first communication to the distant client, using a
convention providing by the markup language for describing public
keys, and the distant client responds with their public key, using
the same markup convention, this step is unnecessary as both clients
already have each others public key. Otherwise additional
communications are required to exchange public keys between the
initiating client and distant client.
SAFE - Step Three
The third step is for the initiating client to engage in
communication to the distant client, such as sending an email. When
the distant client is ready to engage script execution it must prompt
its local mail server to initiate Step Four. This communication
between the distant client and its local mail server MAY occur using
any transmission protocol even if that protocol is not affiliated
with email or SMTP and even if that method of communication is
proprietary. When communicating to the distant mail server the
distant client MUST include the public key value of the initiating
client.
Cheney Standards Draft [Page 5]
Internet-Draft SAFE Scripting Method August 2009
+-----------+ +-----------+
| | | |1. +---------+
+------------+ | Mail- | | |--->| |
| Initiating | | Server | | Distant | | Distant |
| Client |--->| of |-------->| Mail- |2. | Client |
+------------+ | Local | | Server |<---| |
| Domain | | | +---------+
| | | |
+-----------+ +-----------+
SAFE - Step Four
The forth step is for the distant client's email server to send a
public key exchange request to the initial client. The distant mail
server must have a public/private key pair that is entirely unique
and not affiliated with the key pair used by the distant client.
This separate key pair is necessary, because it notifies the initial
client that it will be engaging in communication with a different
entity and it prevents accidental or involuntary entry into a model
of script execution. This additional notification provides the
initiating user a final opportunity to disallow use of the SAFE Model
for any reason. Only the distant mail server needs to send a message
with its key value since it was provide the initiating client's
public key in Step Three.
+-----------+ +-----------+
+------------+ | | | |
| | | Mail- | | |
| Initiating |<----------| Server |<----------| Distant |
| Client | | of | | Mail- |
| | | Local | | Server |
+------------+ | Domain | | |
| | | |
+-----------+ +-----------+
SAFE - Step Five
The fifth step is for the initial client and distant email server to
engage in encrypted communication. At this point communication
between the initiating client and the distant mail server MAY occur
as many times as the distant mail server sends a response to the
initiating client or as many times as the initiating client
communicates to the distant mail server only.
SAFE - Step Six
The sixth step is to close communications between the initiating
client and the distant mail server and then send a notification to
the distant client. This communication from the distant mail server
to the distant client verifies that SAFE Model communication has
occured and properly terminated. The termination communication MUST
contain the final communication that is intended to be delivered to
the distant client.
Cheney Standards Draft [Page 6]
Internet-Draft SAFE Scripting Method August 2009
Once the SAFE Model has terminated the private data stored on the
distant mail server MUST be destroyed or purged. If an interruption
to communication occurs, so that a proper termination is never
generated, the distant server MUST provide a defined timeout by which
all stored communication will be automatically destroyed or purged.
The initiating client SHOULD be provided with the opportunity to
terminate the SAFE Model at every possible opportunity.
SAFE - Step Seven
The distant client MUST send an automated response email to the
initiating client once the distant client verfies termination of the
SAFE Model. If the distant client fails to send a response within a
given timeout, specified by the initiating client's user agent from
the time of most prior response, the SAFE Model MUST be presummed to
have failed. If the SAFE Model has failed the initiating client MAY
start over in order to initiate a new SAFE Model instance or MAY
communicate directly to the distant client without use of the SAFE
Model.
SAFE - Summary
The end result of the SAFE Model is that communication may be
encrypted between two distant clients and a separate simultaneous
application session may be established between an independent third-
party which is already present in the transmission path of the two
clients. This effectively means, given SMTP derived protocols as a
push transmission, the initiating client will be communicating
directly to the distant client while such communications may be
intercepted and automatically responded to by the distant server.
The distant server, however, MUST be a mediating agent of
communication and MUST NOT be a destination of communication.
Additional security constraints applied to SAFE Model
* All script, or programmatic execution, that is to occur during the
SAFE Model MUST occur only from code that resides locally on the
distant server. Local is defined as the single operating system on
which the single specific mail server executes or resides. Scripts
or other programmatic code MUST NOT request, refer to, or source in
any code that is not stored local to the executing server.
* Any code specified to execute during the SAFE Model MUST reside as
a new instance of the original code in a single 'sand-boxed' location
so that other code is not executed by mistake and code is not open to
security compromises as a result availability to a data transmission.
* Communications that arise between the distant server and initial
client in the SAFE Model MUST be considered temporary and private.
The distant server MUST NOT pass communication received or generated
from the SAFE Model to the distant client until except for the final
terminating communication of the SAFE Model to the distant client.
Cheney Standards Draft [Page 7]
Internet-Draft SAFE Scripting Method August 2009
*It is RECOMMENDED that a separate email address be specified for a
distant client that is present to receive maintenance and status data
from the distant server. This is entended to ensure that there is no
collusion of maintenance data and user communication. Maintenance
data and other gathered data, such as statistics, MUST NOT be
reported or generated with uniquely identifiable user information,
content, or header data. Such data MAY be generated for internal
reporting to the owner of the distant mail server and distant client
if it cannot be matched against uniquely identifiable user data.
* Communications sent from the distant server MUST be sent with the
same MIME content type as the data received by the distant server
from the initiating client. If this results in incompatibilities at
the distant mail server the distant mail server MUST properly
terminate the SAFE Model, but send an error report to the distant
client instead of the intended communication.
* The CA MUST NOT reside within the same domain as either the
initiating client, the initiating client's direct mail server, the
distant server, or the distant client.
XMLSmtpPush object definition
This programmatic object exists to allow script code to open a
transmission path from a point of execution to a known addressable
point independent of the communication details specified in either
the tranmission header information or document specifications. This
transmission path MUST be a unidirectional path from the agent of
execution, typically the agent of execution would be the distant
server of the SAFE Model, to the addressable provoking entity, which
would typically be the initial client of the SAFE Model. This
represents a fire and forget method of transport where the agent of
execution sends data once and expects to never receive either a
success or failure transmission status. The XMLSmtpPush object MUST
NOT open a tranmission to any destination other than the provoking
entity.
The XMLSmtpPush object MUST retrieve data from the most recent
document header specific in the markup language, if available, or if
that is not available then from the packet header of the transmission
protocol. If the header data is not understood, not defined, or not
well-formed the data MAY be transported with RFC 5322 conformant
headers. Data transmitted by this object using RFC 5322 conformant
headers SHOULD NOT expect successful or accurate interaction with the
intended document.
Despite its name, the XMLSmtpPush object is not intended for limited
implementation across the SMTP protocol only. The object is intended
for functional operation across any protocol that conforms to the
defined protocol requirements of RFC 5322, or compatible protocols,
and its primitive models.
Cheney Standards Draft [Page 8]
Internet-Draft SAFE Scripting Method August 2009
XMLSmtpPush object methods
abort()
The abort() method stops the current request by closing the
transmission path before any data is sent if the transmission path is
opened and returns a value of "false". If a transmission path is not
opened a value of "false" is returned. This method is required to
occur at least once per open method. If this method does not occur
to close an open method an error MUST be thrown.
getHeaderDatagram()
The getHeaderDatagram() method returns the header names and values in
a JSON object or multidimensional array. If the document header
cannot be detected or understood a value of null MUST be returned.
getHeader("headername")
This method returns the string value of a single specified header if
the specified header exists, otherwise this method returns a value
of null.
open()
The open method opens an asynchronous transmission path from the
executing agent to the provoking entity. The open method MUST NOT
send data.
send(variable1,variable2,...)
The send method MUST send data to the provoking entity. The send
method MUST NOT open or prepare a transmission path, which is the
function of the open method. This means a send method MUST execute
only after an open method has executed. If a send method attempts to
execute without a prior instantiated open method an error MUST be
thrown. This granular strict functionality between the open and send
methods is intended to provide script authors greater control of
various different data sets to be sent while simultaneously reducing
complexity derived from such granularity.
The send method expects to receive instructions for altering a
document and the new content that is to be provided, if any, where
such instructions are stored in a function defined as a single named
variable. Such a named function SHOULD be conservative in its
instructions and liberal in its static content. The specified
instructions MUST be expressed as DOM methods, XPath expressions,
and/or the innerHTML method with anticipation that such instructions
will be processed by the client without decisions or formatting onto
the instructions, its content, or its perceived impact on the
document. DOM instructions MUST be specific to the document received
by the agent of execution, or they SHOULD expect to fail to execute
at the provoking entity.
Cheney Standards Draft [Page 9]
Internet-Draft SAFE Scripting Method August 2009
Example of XMLSmtpPush object in JavaScript language assuming MML header
var checkoutPage1 = function () {
var safe, insta, instb,
div = document.getElementById('content'),
select = document.getElementById('selectlist').value,
checkbox = document.getElementById('checkbox').checked,
chkresponse = document.createElement('p'),
slctresponse = document.createElement('p'),
from = document.getElementByTagName('from')[0],
replyto = from = document.getElementByTagName('reply-to')[0];
chkresponse.setAttribute('id', 'checkresponse');
chkresponse.textContent = "Text returned for checked checkbox";
slctresponse.setAttribute('id', 'selectresponse');
insta = function () {
div.appendChild('chkresponse');
};
instb = function () {
div.appendChild('slctresponse');
};
if (XMLSmtpPush) {
safe = new XMLSmtpPush();
if (safe.getHeader('from').value !== undefined) {
safe.open(getHeader(from).value);
} else if (safe.getHeader('reply-to').value !== undefined) {
safe.open(getHeader(replyto).value);
}
if (checkbox === true && select === "default") {
safe.send(insta);
} else if (checkbox === true && select === "first") {
slctresponse.txtContent = "You selected the first option.";
safe.send(insta, instb);
} else if (checkbox === true && select === "second") {
slctresponse.txtContent = "You selected the second option.";
safe.send(insta, instb);
} else if (checkbox === false && select === "first") {
slctresponse.txtContent = "You selected the first option.";
safe.send(instb);
} else if (checkbox === false && select === "second") {
slctresponse.txtContent = "You selected the second option.";
safe.send(instb);
}
safe.abort();
return true;
} else {
return false;
}
};
Cheney Standards Draft [Page 10]
Internet-Draft SAFE Scripting Method August 2009
Processing role of the client
The client MUST be prepared to execute DOM instructions, XPath
expressions, or the innerHTML method. Any other client-side script
execution MUST NOT occur aside from meta-language parsing of a
document only with regard to the appropriate meta language the markup
language conforms to. The user MUST NOT be allowed to interfere with
the processing of such instructions. If the user did not wish for
such instructions to execute the user would not have voluntarily
allowed execution of the SAFE Model.
The intent is to remove security vulnerabilities associated with
client-side code execution requests from a message by pushing those
vulnerabilities onto a server not directly associated with the user.
The user SHOULD be fully aware that data MAY be coming in as
asynchronous updates and not new documents by convention of the SAFE
Model.
Security
Client-side script execution is associated with the highest quantity
of security vulnerabilities in computing. Eliminating client-side
scripting on the web and instead using SAFE can nullify most of these
problems making the internet a safer place.
IANA Considerations
This document contains no IANA considerations.
References
[ARCHITECTURE]
Crocker D. "Internet Mail Architecture", RFC 5598, Brandenburg
Internetworking, June 2009.
<http://www.ietf.org/rfc/rfc5598.txt>
[DOM]
Wood L, Apparao V, Byrne S, Champion M, Isaacs S, Jacobs I,
Le Hors A, Nicol G, Robie J, Sutor R, Wilson C, Sharpe P, Smith
B, Sorensen J, Whitmer R. "Document Object Model (DOM) Level 1
Specification Version 1.0", W3C Recommendation, SoftQuad Inc.,
Netscape, Sun, ArborText, Microsoft, W3C, Inso EPS, Texcel
Research, IBM, Novell, iMall, October 1998.
<http://www.w3.org/TR/REC-DOM-Level-1/>
[FORMAT]
Resnick P. "Internet Message Format", RFC 5322, Qualcomm,
October 2008. <http://www.ietf.org/rfc/rfc5322.txt>
[IANA]
Reynolds J "Assigned Numbers", STD 2, RFC 3232, January 2002.
<http://www.ietf.org/rfc/rfc3232.txt>
Cheney Standards Draft [Page 11]
Internet-Draft SAFE Scripting Method August 2009
[JAVASCRIPT]
Crockford D. "JavaScript: The Good Parts", Yahoo! Press and
O'Reilly Media, May 2008. [Book]
ECMA International. "Standard ECMA-262, ECMAScript Language
Specification 3rd edition", December 1999.
<http://www.ecma-international.org/publications/files/ECMA-ST/
Ecma-262.pdf>
[JSON]
Crockford D. "The application/json Media Type for JavaScript
Object Notation (JSON)", RFC 4627, July 2006.
<http://www.ietf.org/rfc/rfc4627.txt>
[MIME]
Freed N, Borenstein N. "Multipurpose Internet Mail Extensions
(MIME) Part One: Format of Internet Message Bodies", RFC 2045,
Innosoft, First Virtual, November 1996.
<http://www.ietf.org/rfc/rfc2045.txt>
Freed N, Borenstein N. "Multipurpose Internet Mail Extensions
(MIME) Part Two: Media Types", RFC 2046, Innosoft, First
Virtual, November 1996. <http://www.ietf.org/rfc/rfc2045.txt>
Moore K. "MIME (Multipurpose Internet Mail Extensions) Part
Three: Message Header Extensions for Non-ASCII Text", RFC 2047,
University of Tennessee, November 1996.
<http://www.ietf.org/rfc/rfc2047.txt>
Nelson S, Parks C, Mitra. "The Model Primary Content Type for
Multipurpose Internet Mail Extensions", RFC 2077, LLNL, NIST,
WorldMaker, January 1997.
<http://www.ietf.org/rfc/rfc2077.txt>
Freed N, Klensin J. "Media Type Specifications and Registration
Procedures", RFC 4288, Sun Microsystems, December 2005.
<http://www.ietf.org/rfc/rfc4288.txt>
Freed N, Klensin J. "Multipurpose Internet Mail Extensions
(MIME) Part Four: Registration Procedures", RFC 4289, Sun
Microsystems, December 2005.
<http://www.ietf.org/rfc/rfc4289.txt>
[MML]
Cheney A. "Mail Markup Language", Internet Draft, April 2009.
<http://mailmarkup.org/mml.txt>
[SMTP]
Klensin J. "Simple Mail Transfer Protocol", RFC 5321, October
2008. <http://www.ietf.org/rfc/rfc5321.txt>
Cheney Standards Draft [Page 12]
Internet-Draft SAFE Scripting Method August 2009
[W3C-XML-SCHEMA]
Fallside D, Walmsley P. "XML Schema Part 0: Primer Second
Edition", W3C Recommendation, IBM, October 2004.
<http://www.w3.org/TR/xmlschema-0/>
Walmsley P. "Definitive XML Schema", Prentice Hall, December
2001. [BOOK]
[WAI-ARIA]
Cooper M, Schwerdtfeger R, Seeman L, Pappas L. "Accessible Rich
Internet Applications (WAI-ARIA) Version 1.0", W3C Working
Draft, W3C, IBM, UB Access, Society for Technical
Communication, August 2008. <http://www.w3.org/TR/wai-aria/>
[WCAG]
Caldwell B, Cooper M, Guarino R, Vanderheiden G. "Web Content
Accessibility Guidelines 2.0", W3C Candidate Recommendation,
University of Wisconsin-Madison, W3C, Google Inc., Trace R&D
Center, April 2008. <http://www.w3.org/TR/WCAG20/>
[XFORMS]
Boyer J. "XForms 1.0 (Third Edition)", W3C Recommendation, IBM,
October 2007.
<http://www.w3.org/TR/2007/REC-xforms-20071029/>
[XML]
Bray T, Paoli J, Sperberg-McQueen C, Maler E, Yergeau, F.
"Extensible Markup Language (XML) 1.0 (Fourth Edition)", W3C
Recommendation, Textuality, Microsoft, W3C, Sun, August 2006.
<http://www.w3.org/TR/REC-xml/REC-xml-20060816.xml>
[XHTML]
Pemberton S, Austin D, Axelsson J, Celik T, Dominiak D,
Elenbaas H, Epperson B, Ishikawa M, Matsui S, McCarron S,
Navarro A, Peruvemba S, Relyea R, Schnitzenbaumer S, Start P.
"XHTML 1.0 The Extensible HyperText Markup Language (Second
Edition)", W3C Recommendation, CWI, W3C, Grainger, Opera
Software, Microsoft, Openwave Systems, Philips Electronics,
Netscape/AOL, Panasonic, Applied Testing and Technology,
WebGeek Inc., Oracle, SAP, Sony Ericsson, August 2002.
<http://www.w3.org/TR/xhtml1/>
[XHTML2]
Axelsson J, Birbeck M, Dubinko M, Epperson B, Ishikawa M,
McCarron S, Navarro A, Pemberton S. "XHTML 2.0", W3C Working
Draft, Opera Software, x-port.net, Websense, W3C, Applied
Testing and Technology, WebGeek Inc., CWI, July 2006.
<http://www.w3.org/TR/xhtml2/>
Cheney Standards Draft [Page 13]
Internet-Draft SAFE Scripting Method August 2009
Acknowledgements
This work was inspired by the AJAX concept, the security
vulernabilities of client side scripting on the WWW, and the
potential implications of the Mail Markup Language (MML).
Author's Address
Austin Cheney
User Interface Technologist, Travelocity
3150 Sabre Drive
Southlake, TX 76092
PHONE: (682) 605-1000
EMAIL: austin.cheney@us.army.mil
Copyright (c) 2009 IETF Trust and the persons identified as the document
authors. All rights reserved.
Expires February 1, 2010
Cheney Standards Track [Page 14]