Just an addition to the suggestions already posted; I have also written a web server with the W5100 and use the authorization supplied in the GET request by the client. My webserver is controlled by a PHP script using CURL which puts the authorization into the request:
GET /secret.ard HTTP/1.1
Host: localhost
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtQW==
I use a Base64 library to unencode the credentials. (search for adamvr-arduino-base64-4be16cd.zip)
In my program I look for the Authorization
if (requestLine.startsWith("Authorization: Basic ")){
strcpy(username, getUsername(requestLine));
}
:
// Returns username:password
char* getUsername(String authorizationLine){
String encryptedDetails = authorizationLine.replace("Authorization: Basic ","");
char encrypted[300];
char decrypted[300];
encryptedDetails.toCharArray(encrypted, 300);
int length = base64_decode(decrypted, encrypted, 300);
return decrypted;
}
I'll be using this for controlling my heating externally. It's definitely worth putting some extra security in, but not too much

Hope this helps!