MonkeyFist  
your fist
your fist (SUH-wag) (FOR-aj) (pro-PHILE) (kon-TAKT) (LAWG)
 

Home

RNC-Philly Protests

The Daily Churn

Nader Watch

A16.DC Protests

Politics

Activism

Environment

WorldNews

Linux

XML

Technology

Life

Music

Books

Food

MetaMonkey

About MF Collective

Who we are

More Monkeyfist

Our Sources

Other formats:
lo-tech | WAP
XBEL | The Index

©Copyright 2000
Monkeyfist Collective.



Web RPCs Considered Harmful attention

A comment about technology (more about technology; more by Ken MacLeod)
Posted by Ken MacLeod
Link to this URL or format for printing

There are two relatively distinct dangers with RPCs used over the Internet, the first is a security issue, the second an open standards issue. There are alternatives that significantly reduce the security and standardization risks, and are just as simple, but they involve application designers using different design patterns than they have become used to, and strongly encouraged by the industry to use, on the desktop and local networks.

Background

The term RPC is used here generically to refer to any application or object interface that is made available over the Internet, regardless of whether it uses remote procedure calls, remote methods, distributed objects, or messaging. Common products and standards that support this are CORBA, DCOM, Java RMI, DCE RPC, XML-RPC, SOAP, and others.

The issues described here only apply to applications implemented on an Internet scale for public use and is not intended to apply to the use of the above products on a local host or network or for proprietary applications, although the alternatives described can be used for those applications also.

CORBA and DCOM are mature architectures for implementing distributed applications using the remote procedure/remote object model (RPCs). Although common and widely adopted on the desktop and local networks, they have not enjoyed broad Internet usage because of slightly heavy installation and usage requirements placed on users. Simpler protocols, like XML-RPC and SOAP, are about to change that and will make RPCs on the Internet as common as HTTP, HTML, and XML. But there is danger lurking here.

These are simple XML based protocols, anyone with an XML parser and a few minutes can be working with a Web-based application in no time. This is generally perceived as a very good thing (and if it weren't for the danger this entails and equally simple, safer alternatives, I would agree). The alternatives discussed below can also be implemented using XML just as easily.

Internet Security

The RPC model encourages numerous unique applications, each with one or more new, unique implementations. While some rigorously developed applications may be thoroughly screened for security holes, the vast majority of applications will never have security as a high priority.

A similar issue exists in Web servers. Web servers themselves are generally very robust pieces of software, but they allow application developers to extend the web server using modules or Common Gateway Interface (CGI) applications. These modules and CGIs also range from quick hacks to robust, rigorously developed applications. Server modules and CGIs are well known for being the weakest point in web server security.

Unique application programming interfaces (APIs) also place an immense burden on users and security analysts who must make assessments of each new API that is allowed to connect to their hosts. This assessment is necessary because Internet security is not just about assessing a protocol, but also the applications and environment using the protocol. Each new API, just like a new protocol to be supported, requires a new assessment.

Lock-in or Fragmentation

Although interfaces can be developed in an open manner, with all parties having equal access and the result supporting all parties, common, and expected, usage of RPC protocols encourages single-source interface definitions.

Single-source interfaces almost invariably favor the originator's implementation, are controlled by the originator, and often are not well-matched to alternative implementations. Additional implementations must either adopt the original interface and be held captive to it (lock-in) or create a new, alternate interface (fragmentation).

Alternatives

One of the core benefits of an RPC standard is that it provides a generic method, with supporting libraries, for communication between applications. Therefore, any alternative must also provide a generic method for communication between applications.

One approach is not to try to change the need or amount of information to be communicated, but to just change the nature of the communication.

The current trend in software development focuses on interfaces as a dividing line between code modules, to reduce interdependancies internal to each module. Popular styles of object oriented development take this one step further and promote primarily the use of interfaces to interact with data or services. These coding styles lend themselves naturally to remote communication, hence the common RPC-style protocols.

An alternative is to focus on data transfer protocols rather than remote API protocols. Data transfer protocols will be relatively few, which leads to well-known, well-tested implementations, and is well suited to open standardization.

Several such protocols already exist (HTTP, TupleSpaces, restricted forms of SQL), so it's not a matter of brand new protocol development but of developing and adopting design patterns that revolve around data transfer protocols.

About the Author

Ken MacLeod is an independent systems consultant with 20 years experience in protocols, open systems, and the Internet. Ken wrote the Perl implementation of XML-RPC and a Perl and Python implementation of SOAP, and is an active participant on the SOAP and XML Distributed Applications mailing lists.

Ongoing discussion of this topic should be directed to the XML Distributed Applications mailing list. The archive is at <http://lists.w3.org/Archives/Public/xml-dist-app/>, to subscribe, send a message to xml-dist-app-request@w3.org with the subject "subscribe".

---

Visit the Monkeyfist archive for more articles.

 
 
your fist