Προγραμματισμός στο διαδίκτυο

Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr

Αρχιτεκτονική του παγκόσμιου ιστού

Προσδιορισμός στοιχείων με URI

Ο προσδιορισμός στοιχείων στο πρωτόκολλο HTTP γίνεται με τη χρήση των Uniform Resource Identifiers. Αυτά ορίζονται από την παρακάτω γραμματική (RFC 2068):
  URI            = ( absoluteURI | relativeURI ) [ "#" fragment ]

  absoluteURI    = scheme ":" *( uchar | reserved )

  relativeURI    = net_path | abs_path | rel_path

  net_path       = "//" net_loc [ abs_path ]
  abs_path       = "/" rel_path
  rel_path       = [ path ] [ ";" params ] [ "?" query ]

  path           = fsegment *( "/" segment )
  fsegment       = 1*pchar
  segment        = *pchar

  params         = param *( ";" param )
  param          = *( pchar | "/" )
  scheme         = 1*( ALPHA | DIGIT | "+" | "-" | "." )
  net_loc        = *( pchar | ";" | "?" )

  query          = *( uchar | reserved )
  fragment       = *( uchar | reserved )

  pchar          = uchar | ":" | "@" | "&" | "=" | "+"
  uchar          = unreserved | escape
  unreserved     = ALPHA | DIGIT | safe | extra | national

  escape         = "%" HEX HEX
  reserved       = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+"
  extra          = "!" | "*" | "'" | "(" | ")" | ","
  safe           = "$" | "-" | "_" | "."
  unsafe         = CTL | SP | <"> | "#" | "%" | "<" | ">"
  national       = <any OCTET excluding ALPHA, DIGIT,
		   reserved, extra, safe, and unsafe>
Η χρήση τους επιτρέπει τον προσδιορισμό άλλων σελίδων τοπικά, σε άλλα μηχανήματα, καθώς και ερωτήσεων:
http://kerkis.math.aegean.gr/~dspin/
http://www.altavista.com/cgi-bin/query?pg=q&text=yes&q=link%3akerkis%2emath%2eaegean%2egr%2f%7edspin+%2dhost%3akerkis%2emath%2eaegean%2egr&stq=10&c9k
Σημαντικά προβλήματα ασφάλειας που μπορούν να προκύψουν είναι τα παρακάτω:
  1. Το σύστημα DNS που μετατρέπει τα ονόματα σε διευθύνσεις δεν είναι ασφαλές
  2. Οποιοσδήποτε μπορεί να δημιουργήσει ένα URI. Δεν πρέπει η ασφάλειά μας να βασίζεται σε "κρυμμένα" αρχεία ή στη χρήση συγκεκριμένων URI.
  3. Με τον προσδιορισμό άλλων θυρών μπορεί ένα "αθώο" URI να "μιλήσει" σε άλλο πρωτόκολλο (όχι HTTP) με καταστροφικά αποτελέσματα.
  4. Όταν ένα URI περιέχει συνθηματικό αυτό δεν μπορεί να είναι εμπιστευτικό.

Το πρωτόκολλο HTTP

Το πρωτόκολλο HTTP υποστηρίζει τις παρακάτω μεθόδους επικοινωνίας: Παράδειγμα:
GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.w3.org
Βασικά προβλήματα ασφάλειας που έχουν σχέση με το HTTP είναι τα παρακάτω:

Διασφάλιση συναλλαγών HTTP

Συναλλαγές που χρησιμοποιούν HTTP μπορούν να ασφαλιστούν ως προς την εμπιστευτικότητα και την ακεραιότητα σε τρία διαφορετικά επίπεδα:
  1. Κάτω από το πρωτόκολλο HTTP μέσω SSL ή IPSEC
  2. Επεκτείνοντας το πρωτόκολλο HTTP (π.χ. secure HTTP)
  3. Πάνω από το πρωτόκολλο HTTP με λ.χ. με εξειδικευμένες εφαρμογές σε Java που κρυπτογραφούν τα μηνύματα.

Περιγραφή σελίδων με HTML

H HTML είναι μια εφαρμογή της SGML για την περιγραφή σελίδων στο Web. Περιοχές του κειμένου σημειώνονται με ετικέτες (tags). Κάθε ετικέτα περιλαμβάνει το όνομά της και παραμέτρους. Οι ετικέτες γράφονται ως εξής:
<όνομα ετικέτας παράμετροι>
Μια περιοχή του κειμένου μπορεί να σημειωθεί ως εξής:
<ετικέτα>
περιοχή που σημειώνεται
</ετικέτα>
Βασικές ετικέτες που υποστηρίζει η HTML είναι οι παρακάτω:
HTML
περιγραφή ολόκληρης σελίδας
HEAD
επικεφαλίδα της σελίδας
BODY
κείμενο της σελίδας
H1-H6
επικεφαλίδες του κειμένου
P
αλλαγή παραγράφου
UL
λίστα με τελείες
OL
αριθμημένη λίστας
LI
στοιχείο λίστας
BR
αλλαγή γραμμής
HR
οριζόντια γραμμή
IMG
εικόνα
A
(anchor) σημείο πρόσβασης από ή σε υπερκείμενο
PRE
προστοιχειοθετημένο κείμενο
DL, DT, DD
λίστα περιγραφών, περιγραφές
I
πλάγιοι χαρακτήρες
B
έντονοι χαρακτήρες
Παράδειγμα σελίδας:
<!doctype html public "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<TITLE>Τίτλος της σελίδας</title>

<META NAME="GENERATOR" CONTENT="thread.pl">
<META NAME="AUTHOR" CONTENT="Diomidis Spinellis">
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=ISO-8859-7">
<LINK REV="made" HREF="mailto:dspin@aegean.gr"> 
<LINK REL="ToC" HREF=".././web/index.htm">
<LINK REV="Subdocument" HREF=".././web/index.htm">
<LINK REL="previous" HREF=".././web/http.htm">
<LINK REL="next" HREF=".././web/cgi.htm">

</HEAD>

<BODY> <H1>Επικεφαλίδα πρώτου επιπέδου</H1><HR>
Κείμενο που περιέχει ένα σημείο κατάληξης υπερκειμένου
<a name="G42"> (<em>με έντονο κείμενο</em>)</a> 
και μια λίστα:
<ul>
<li> στοιχείο 1
<li> στοιχείο 2
</ul>

<p>
Νέα παράγραφος με ένωση υπερκειμένου στο
<A HREF="http://www.aegean.gr">Πανεπιστήμιο Αιγαίου</A>

<HR>
</BODY>

</HTML>
Προβλήματα ασφάλειας που σχετίζονται με την HTML είναι τα εξής:

Web browser control

Internet transfer control

Βιβλιογραφία