Some examples of Web interfaces include the FedEx tracking interface (http://www.fedex.com/track_it.html) which allows packages to be tracked, Virtual Vineyards at (http://virtualvin.com) which allows specialty foods and excellent wines to be purchased using the Internet, or the Pizza Hut in Santa Cruz (http://www.pizzahut.com) which allows pizzas to be ordered using a Web interface.
Most Web-based interfaces such as these are built using HTML forms and the Common Gateway Interface (CGI). HTML forms provide a widget toolset for building graphical user interfaces. The toolset includes text entry areas, toggle buttons, selection lists, popup menus, etc. This toolset is extensive enough to develop the most sophisticated interface, yet small enough to quickly learn and provide a consistent look and feel.
The Common Gateway Interface is a set of specifications which allow an external gateway to speak the same protocol as the WWW server, HTTP. Unlike plain HTML documents which exist in a constant state and can only be statically retrieved, CGI programs allow documents to be dynamically created and displayed in real time. CGI programs allow a client to submit a request to a server, the server then receives the input and performs the desired processing, the results are then sent back and displayed by the client.
<Limit> allow from utk.edu </Limit>By using this code segment, all documents in this directory are only accessible from clients running on machines within the domain utk.edu. These documents could include a top-level HTML form. In a similar fashion, a username and password authorization can be implemented.
A third security feature which should also be considered is called mid-entry prevention. Passwords and domain restrictions can easily be used to prevent outsiders from accessing the top-level interface of an application. However, if an interface goes multiple-levels deep, then it is also a good idea to prevent clever, yet authorized, users from deliberately jumping into the middle of the interface and supplying new values. The problem in some applications is that state information must be passed from one interface to the next. This information is sometimes passed using the "hidden" HTML forms tag. While information passed using this tag is not shown on the browser's window, this information is accessible by viewing the document source code. Hence, it is possible that a clever user could examine the document source of a script, find the parameters and variable names used, and recreate a different HTML page to pass forged values on to the next script.
This problem can be avoided by examining the value of the CGI variable HTTP_REFERER. If the value of this variable does not match the previous link from the Web interface, then an error message should be returned. This variable was designed to help perform logging, optimize caching, and tracing obsolete or mistyped links; but it can also be used to help prevent mid-entry into a secure Web interface.
Traditional non-Web based interfaces are connection oriented and solve the concurrency control problem by locking resources. The resources are locked while they are updated to avoid conflicts, and then are released when a transaction is completed or the connection is broken. Because of the connectionless nature of the WWW, locking resources on the Web is not simple. The problem with locking resources on the Web is that a user may fail to reach a state that unlocks the resource and because there is no connection to be broken, this resource could remain locked thus inconveniencing other users.
When using the Web, concurrency control can be solved using one of two different methods.
Considering the power and flexibility that the Internet offers, one can expect more Web-based office applications to be developed in the future. One office application which the author has helped develop is a Web-based scheduling and calendar interface. The interface is called SCOUT and can be experimented with at (http://www.admin.utk.edu/scout). This interface allows faculty, staff, and students at the University of Tennessee to store their scheduling and calendar information at a web site. By using a WWW browser, users can directly access and modify their personal appointment calendars from any computer on campus or in the world.
To illustrate how closely a Web application can resemble a traditional MS-DOS/Windows or X-Windows applications, and to provide some insight and pointers into developing a user-friendly Web application, the SCOUT interface will briefly be examined. The SCOUT interface uses time-out locking for concurrency control and incorporates the three security measures mentioned earlier.
The SCOUT application is composed of five different screens and uses four different CGI Perl scripts. To help the user reference the screens, a labeled image is displayed in the upper right-hand corner of each window as shown in Figure 1. Our experience has shown that these labels can be very helpful when users are reading on-line documentation, asking support questions, and navigating through the application. By clearly labeling each screen of the Web interface, the users can more quickly become fluent with navigating through the application.
For the first screen capture, the entire browser window is shown to give you an idea of how SCOUT appears on your monitor. The remaining screens displayed in this paper have been cropped to only show the contents of the browser window.
As shown above, the first screen welcomes the user to their calendar and allows them to quickly select a month. When the current month is selected (option #1), the UNIX "date" command is invoked to find the numeric value of the current month. Given this numeric value, the UNIX "cal" command is then executed and produces an ASCII version of the current month. With a little conversion, this information is formatted into HTML and displayed as shown in Figure 2. Once displayed, the user can select to view appointments for a specified day, week, or the entire month.
If a user wants to limit viewing access to their calendar, they can add domain restrictions and username/password authorization by placing access restrictions in the directory that contains the HTML file which corresponds to the first screen shown in Figure 1.
In this example, the user has chosen to view only the appointments for Monday, April 22, 1996. A nice feature which this interface incorporates is the ability to quickly navigate back and forth. For example, options exist to allow the users to quickly display the "previous" and "next" months. To pass selected information from one CGI script to the next, the HTML input tag type "hidden" is used. In this example, the date April 22, 1996, is passed to the next script which displays an output similar to Figure 3.
Figure 3 shows three appointments have been scheduled for Monday, April 22, 1996. In addition to displaying appointments, this screen allows the user to add, modify, and delete appointments. For example, when the "Add" button is pressed, a screen similar to the one in Figure 4 is displayed.
Figure 4 shows an additional meeting being scheduled from 3:30 to 4:00 P.M. Select tags quickly allow the user to choose a start and stop time in half hour increments. If an appointment needs to be scheduled for a time which is not on the half hour, the user can enter these times in the input boxes to the right of the pull-down menus.
To make a modification, another username and password are entered, authentication is verified, and if approved, a message similar to the one in Figure 5 is displayed. This second username/password authorization is independent of the HTTP server, providing an additional level of security. However, because most users quickly get tired of entering their username and password every time they modify their calendar, a remote host can be specified so that changes can be made from the specified hosts without having to enter a username and password.
The entire calendar is stored in a single ASCII file in HTML format using the tabular environment. Each entry is composed of three columns. The columns correspond to 1) start time, 2) stop time, and 3) description of the appointment. The appointments are stored chronologically by start times. For example, the contents for April 22, 1996, are stored as follows.
<1996-04-22> <table CELLSPACING=1 BORDER=1 CELLPADDING=4> <tr> <td>8:30 AM</td> <td>9:30 AM</td> <td>Council on International Education (4th floor Conference Room)</td> </tr> <tr> <td>1:30 PM</td> <td>3:00 PM</td> <td>Staff Meeting - (5th floor Conference Room)</td> </tr> <tr> <td>6:00 PM</td> <td> - </td> <td>ACM Banquet - (Hermitage Room)</td> </tr> </table> </1996-04-22>
Before performing the final step of modifying a calendar, the last CGI script also ensures that an illegal jump was not attempted. An illegal entry is performed by examining the CGI environment variable $ENV{HTTP_REFERER}. The value of this variable should match the URL of the previous CGI script.
| Pointers to Abstract and Conference Presentation | |||
|---|---|---|---|
| Abstract | Papers & posters in this theme | All Papers & posters | AusWeb96 Home Page |