Jump to content

Qualitätssicherung Digitale/Web Projekte: Difference between revisions

From Parasol
Sdruschel (talk | contribs)
No edit summary
Sdruschel (talk | contribs)
No edit summary
Line 124: Line 124:
([http://de.wikipedia.org/wiki/Personenbezogene_Daten http://de.wikipedia.org/wiki/Personenbezogene_Daten])  
([http://de.wikipedia.org/wiki/Personenbezogene_Daten http://de.wikipedia.org/wiki/Personenbezogene_Daten])  


Datenbank/Datenbanken Spalten mit personenbezogenen oder sensiblen Daten mit "mCrypt" & "Triple DES (56 Bit)" als "BASE 64" encodieren. Bsp.: ideas` (`id`, `created`, `modified`, `title`, `name`, `lastname`, `email`, `street`, `zip`, `city`, `descr`, `push`, `materials`, `category_id`, `approved`, `active`, `views`, `votes`, `deleted`, `winner`)
Datenbank/Datenbanken Spalten mit personenbezogenen oder sensiblen Daten mit "mCrypt" & "Triple DES (56 Bit)" als "BASE 64" encodieren. Beispiel:  
ideas` (`id`, `created`, `modified`, `title`, `name`, `lastname`, `email`, `street`, `zip`, `city`, `descr`, `push`, `materials`, `category_id`, `approved`, `active`, `views`, `votes`, `deleted`, `winner`)
VALUES
VALUES
(4659, '2011-08-12 15:01:43', '2011-08-12 15:01:43', 'Titel', 'X8UrUA8ug8U=', 'X8UrUA8ug8U=', 'g5RuiljQfDKpxxj1LXoK4qQg4Tya6udb', 'pN4NBpnRrO6PFfDxkZNQl7pwjbSLMoXG/ORmcyYGe6UupbTqIl8JUa2CAKuLgKAf', 12345, 'U5JBgt9zuiiSXB2uw9g0Pw==', 'Wie', 'Idee', '', 5, 0, 0, 0, 0, 0, 0);
(4659, '2011-08-12 15:01:43', '2011-08-12 15:01:43', 'Titel', 'X8UrUA8ug8U=', 'X8UrUA8ug8U=', 'g5RuiljQfDKpxxj1LXoK4qQg4Tya6udb', 'pN4NBpnRrO6PFfDxkZNQl7pwjbSLMoXG/ORmcyYGe6UupbTqIl8JUa2CAKuLgKAf', 12345, 'U5JBgt9zuiiSXB2uw9g0Pw==', 'Wie', 'Idee', '', 5, 0, 0, 0, 0, 0, 0);


===Webserver===
NGINX oder lighthttpd bevorzugt. Port 80 und 443 öffnen, restliche Ports schliessen. Kein! Dateizugriff auf den Webserver per ftp. File- und Wartungszugriff ausschliesslich über Hostsystem. Sobald Daten (und sei es nur ein Kontaktformular) übertragen werden, komplette Seite verpflichtend in https laufen lassen.


Ausgabe des Webserver Produktnamen unterbinden. Bsp.


{| class="mw-collapsible"
|-
! Beispiel
|-
| Beispiel1
|}




===Webserver===
NGINX oder lighthttpd bevorzugt. Port 80 und 443 öffnen, restliche Ports schliessen. Kein! Dateizugriff auf den Webserver per ftp. File- und Wartungszugriff ausschliesslich über Hostsystem. Sobald Daten (und sei es nur ein Kontaktformular) übertragen werden, komplette Seite verpflichtend in https laufen lassen.


===PHP===
===PHP===
Line 140: Line 148:


Verpflichtend. Sofern allow_url_fopen gebraucht wird, dies durch bsp. libcurl anpassen.
Verpflichtend. Sofern allow_url_fopen gebraucht wird, dies durch bsp. libcurl anpassen.




Line 157: Line 172:


==Frontend==
==Frontend==




Line 174: Line 183:


Cross-Site Request Forgery ist nicht mehr möglich.
Cross-Site Request Forgery ist nicht mehr möglich.
IP-Adresse 92.51.175.186:
Webserver-Dienst ist anf¨allig f ¨ ur
Denial of Service-Angri�e
Anderes
Webserver-Produkt
einsetzen
Hoch 2.5
Seite 14
I1.1 IP-Adresse 92.51.175.186:
Webserver-Banner gibt
Produktnamen Apache preis
(TCP-Port 80/443)
Dieses Verhalten
unterbinden
Info 2.2.1
Seite 10
I1.2 IP-Adresse 92.51.175.186:
Installierte Apache-Icons
erm¨oglichen R¨ uckschluss auf
eingesetztesWebserver-Produkt
Apache-Icons vom
System entfernen
Info 2.2.2
Seite 11
I1.3 IP-Adresse 92.51.175.186:
Installierte Apache-Modul
beg ¨ unstigt einfacheres Raten von
Dateinamen
Multiviews-Funktion
deaktivieren
Info 2.2.3
Seite 11
I1.4 IP-Adresse 92.51.175.186:
Das System antwortet auf TCP
Timestamp Requests, wodurch die
Uptime des Systems ausgelesen
werden kann
Deaktivierung dieses
Verhaltens
Login-Formular ohne
autocomplete-Tag
autocomplete-Tag
verwenden
Niedrig
(behoben)
3.2
Seite 19
L2.2 IP-Adresse 92.51.175.186:
Verschiedene Cookies verwenden
das secure-Attribut nicht
secure-Attribut setzen Niedrig 3.3.1.1
Seite 19
L2.3 IP-Adresse 92.51.175.186:
Alle Cookies verwenden das
httpOnly-Attribut nicht
httpOnly-Attribut setzen Niedrig 3.3.1.2
Seite 20
L2.4 IP-Adresse 92.51.175.186:
Session Token PHPSESSID wird
nach korrekter Anmeldung nicht
erneuert
Session Token erneuern
und bisheriges
serverseitig invalidieren
Niedrig 3.3.3
Seite 21
L2.5 IP-Adresse 92.51.175.186:
Inkorrekt eingestellte
Caching-Direktiven erm¨oglichen
Einsicht in zuvor aufgerufene
Daten/Webseiten
Ver¨anderung der
Caching-Direktiven
Niedrig 3.3.4
Seite 21
L2.6 IP-Adresse 92.51.175.186:
Applikation ist anf¨allig f ¨ ur Session
Fixation-Angri�e
Nicht vom System
ausgegebene Session
Tokens verwerfen
Niedrig 3.3.5
Seite 21
I2.1 IP-Adresse 92.51.175.186:
Fehlermeldungen geben aktuellen
Dateisystem-Pfad preis
Derartige Informationen
innerhalb von
Fehlermeldungen nicht
ausgeben
Info 3.1.1
Seite 16
Version 1.0 8
dies ist eine Kopie des gedruckten Dokuments, welches insgesamt 47 Seiten umfasst
Sicherheitstest toom Baumarkt GmbH
# Feststellung Empfehlung Risiko Referenz
I2.2 IP-Adresse 92.51.175.186:
E-Mail-Header gibt eingesetztes
PHP-Framework preis
Optionale Headerzeile
X-Mailer entfernen
Info 3.1.2
Seite 17
I2.3 IP-Adresse 92.51.175.186:
CakePHP-Schriftzug gibt
PHP-Framework preis
Schriftzug entfernen

Revision as of 08:24, 21 January 2012

Qualitätssicherung Webseiten

  • Existiert ein Fav Icon und ist dies richtig eingebunden? (Sample Code)
 <head>
 <link rel="icon" href="http://www.{Domain.Endung}/favicon.ico" type="image/x-icon" />
 <link rel="shortcut icon" href="http://www.{Domain.Endung}/favicon.ico" type="image/x-icon" />
 </head>
 
  • Existieren die Basis Meta Angaben?
<meta name="description" content="{Beschreibung}">
<meta name="keywords" content="{Keyword1}, {Keyword2}, ...">
<meta name="revisit-after" content="5days">
<meta name="robots" content=" follow">
  • Existiert ein Impressum und sind die Pflichtabgaben hinterlegt?

Die Pflichtabgaben sind in der deutsche Fassung:

{Firmenname und Rechtsform}
{Strasse}
{Land}-{PLZ} {Ort}
Amtsgericht {Stadt}, HRB {Nummer} (Verpflichtend, wenn ein Handelsregistereintrag vorliegt)
Ust-ID Nr.: DE{Nummer}
Telefon: +49 ({Vorwahl}) {Telefon}
E-Mail: {eMail Adresse}
Geschäftsführer und inhaltlich Verantwortlicher gemäß § 55 Abs. 2 RStV: {Name/n Geschäftsführer}

Auf Englisch:

{Firmenname und Rechtsform}
{Strasse}
{Land}-{PLZ} {Ort}
Local Court of {Stadt}, HRB {Nummer} (Verpflichtend, wenn ein Handelsregistereintrag vorliegt)
VAT ID No.: DE{Nummer}
Telephone: +49 ({Vorwahl}) {Telefon}
E-Mail: {eMail Adresse}
Managing Director and responsible under Sec. 55 para. (2) RStV: {Name/n Geschäftsführer}
  • Existiert eine Goole Sitemap?

[1] [2]

  • Wurde die Seite bei Google angemeldet?

http://www.google.com/addurl/?continue=/addurl

  • Fehlerseiten
Jede Parasol Website hat individuelle Fehlerseiten, für den Fall, das eine Seite nicht gefunden wird, nicht mehr verfügbar ist oder der User darauf keinen Zugriff hat. Die abgefangenen Fehler lauten wie folgt:
Fehlercode Statustext Beschreibung

401 Unauthorized Der Benutzer benötigt eine Autorisierung, ohne die er keinen Zugriff hat. 403 Forbidden Nicht öffentlicher Bereich, auf den der Benutzer keinen Zugriff hat. 404 Not Found Die Ressource wurde unter dem angegebenen URI nicht gefunden.

Die Fehlerseiten bestehen ausschließlich aus HTML und sind klar als Fehlerseiten erkennbar. Die Fehlermeldung ist verständlich dargestellt und beschrieben. Der User hat die Option per Link auf die Homepage zurück zu kommen und wird zusätzlich nach 10 Sekunden automatisch mit folgendem Code per Forward auf die Homepage weitergeleitet.

<head>
<meta http-equiv="refresh" content="10; URL=http://www.{Domain.Endung}/">
</head>

Basis Suchmaschinen Optimierung

  • h1
  • robots.txt
user-agent:*
disallow: {Verzeichnisse, die nicht indiziert werden sollen, wie z.B. /images, /cgi-bin oder /private}
disallow: ...

Kompatibilität

Aktiv testen!

  • IE ab Version 7
  • Safari Mac ab Version X
  • Safari PC ab Version X
  • Chrome Mac ab Version X
  • Chrome PC ab Version X
  • Fireforx Mac ab Version X
  • Firefox PC ab Version X

Google Accounts

Für jeden Kunden legen wir ein Google Konto (z.B. GoogleMail(Konto erstellen) nach dem an Muster

{kunde}.parasolisland@googlemail.com

an. Das Passwort muss stark sein und wird in der Passwort Datenbank gespeichert.


Google Analytics


URL: http://www.google.com/analytics/

Analytics Account für jede Webseite einrichten. Für jede neue Aktion ein eigenes Profil einrichten. Unter diesem Profil dann die produzierten Webseiten einrichten.


Google Webmaster Tools


URL: https://www.google.com/webmasters/tools/

Zum Setup des Webmaster Tools Account muss eine HTML Seite in den Webspace geladen werden. Beim Setup des Profils wird diese zum Download angeboten.


Zusätzliche Qualitätssicherung Facebook Anwendungen

  • Existiert ein Anwendungsicon?
  • Ist die Anwendung als http und https konfiguriert?

Anwendungs-Sicherheit

  • SySS Input aus Toom Projekt

Server Sicherheit

Server Konfiguration

Best Practice Setup ist die Server Konfiguration wie HE psl-srv02.

Host

Den Host Zugriff auf den Root Server beschränken. Keine eigenen SSH Zugänge in die vServer. SSH Port auf 24480 verstellen und mit IP Table einschränken. Sehr Starkes Passwort (200bit) für root User. Zugriff weiterer User auf den localhost beschränken.

Datenbank Server

Den Datenbank vServer nur innerhalb des Root Servers verfügbar machen. Sehr starke (200bit) PW Datenbank Passwörter verwenden. Der DB Server hat keine eigene, nur eine interne IP.

Datenbank & Datenbank Design

phpMyAdmin vollständig inkl. der nötigen Sicherheitsbibliotheken installieren. phpMyAdmin "verstecken" (bsp. website.de/IofkLU2PhA5QN3i8YyxXREapC/) und im Produktivbetrieb aus dem webroot verschieben. phpMyAdmin ausschliesslich auf die Produktiv Datenbank, nie auf den root User konfigurieren. phpMyAdmin per .htaccess (Username und Userpasswort stark, bsp. User: KM9f6ZzPVDuLToavCphqUGwmJ / Pas: F17WzDAghjnGUSTOE0pKBVx9L) und auf unsere/die des Kunden IP Adressen beschränken.

Immer so wenig Daten wie möglich speichern. Besondere Aufmerksamkeit bei personenbezogenen Daten (http://de.wikipedia.org/wiki/Personenbezogene_Daten)

Datenbank/Datenbanken Spalten mit personenbezogenen oder sensiblen Daten mit "mCrypt" & "Triple DES (56 Bit)" als "BASE 64" encodieren. Beispiel:

ideas` (`id`, `created`, `modified`, `title`, `name`, `lastname`, `email`, `street`, `zip`, `city`, `descr`, `push`, `materials`, `category_id`, `approved`, `active`, `views`, `votes`, `deleted`, `winner`)

VALUES (4659, '2011-08-12 15:01:43', '2011-08-12 15:01:43', 'Titel', 'X8UrUA8ug8U=', 'X8UrUA8ug8U=', 'g5RuiljQfDKpxxj1LXoK4qQg4Tya6udb', 'pN4NBpnRrO6PFfDxkZNQl7pwjbSLMoXG/ORmcyYGe6UupbTqIl8JUa2CAKuLgKAf', 12345, 'U5JBgt9zuiiSXB2uw9g0Pw==', 'Wie', 'Idee', , 5, 0, 0, 0, 0, 0, 0);

Webserver

NGINX oder lighthttpd bevorzugt. Port 80 und 443 öffnen, restliche Ports schliessen. Kein! Dateizugriff auf den Webserver per ftp. File- und Wartungszugriff ausschliesslich über Hostsystem. Sobald Daten (und sei es nur ein Kontaktformular) übertragen werden, komplette Seite verpflichtend in https laufen lassen.

Ausgabe des Webserver Produktnamen unterbinden. Bsp.

Beispiel
Beispiel1


PHP

"safe_mode = On"
"allow_url_fopen = Off"

Verpflichtend. Sofern allow_url_fopen gebraucht wird, dies durch bsp. libcurl anpassen.





Webapp

- XSS unterbinden (<script>alert(XXS)</script>)

CMS

- Keine Usernamen wie "admin" oder "root" verwenden. - Passwortrichtlinie/starke Passwörter erzwingen - Autocomplete im Login ist ausgeschaltet. - Default user ist nicht löschbar - https: erzwingen - CAL/IP Tables einsetzten


Frontend

https://92.51.175.186/ideas/add280b7"><script>alert(1)</script>


HTTPS Caching wir für das Backend unterbunden.

Session Fixation ist nicht mehr möglich.

Cross-Site Request Forgery ist nicht mehr möglich.


IP-Adresse 92.51.175.186: Webserver-Dienst ist anf¨allig f ¨ ur Denial of Service-Angri�e Anderes Webserver-Produkt einsetzen Hoch 2.5 Seite 14 I1.1 IP-Adresse 92.51.175.186: Webserver-Banner gibt Produktnamen Apache preis (TCP-Port 80/443) Dieses Verhalten unterbinden Info 2.2.1 Seite 10 I1.2 IP-Adresse 92.51.175.186: Installierte Apache-Icons erm¨oglichen R¨ uckschluss auf eingesetztesWebserver-Produkt Apache-Icons vom System entfernen Info 2.2.2 Seite 11 I1.3 IP-Adresse 92.51.175.186: Installierte Apache-Modul beg ¨ unstigt einfacheres Raten von Dateinamen Multiviews-Funktion deaktivieren Info 2.2.3 Seite 11 I1.4 IP-Adresse 92.51.175.186: Das System antwortet auf TCP Timestamp Requests, wodurch die Uptime des Systems ausgelesen werden kann Deaktivierung dieses Verhaltens Login-Formular ohne autocomplete-Tag autocomplete-Tag verwenden Niedrig (behoben) 3.2 Seite 19 L2.2 IP-Adresse 92.51.175.186: Verschiedene Cookies verwenden das secure-Attribut nicht secure-Attribut setzen Niedrig 3.3.1.1 Seite 19 L2.3 IP-Adresse 92.51.175.186: Alle Cookies verwenden das httpOnly-Attribut nicht httpOnly-Attribut setzen Niedrig 3.3.1.2 Seite 20 L2.4 IP-Adresse 92.51.175.186: Session Token PHPSESSID wird nach korrekter Anmeldung nicht erneuert Session Token erneuern und bisheriges serverseitig invalidieren Niedrig 3.3.3 Seite 21 L2.5 IP-Adresse 92.51.175.186: Inkorrekt eingestellte Caching-Direktiven erm¨oglichen Einsicht in zuvor aufgerufene Daten/Webseiten Ver¨anderung der Caching-Direktiven Niedrig 3.3.4 Seite 21 L2.6 IP-Adresse 92.51.175.186: Applikation ist anf¨allig f ¨ ur Session Fixation-Angri�e Nicht vom System ausgegebene Session Tokens verwerfen Niedrig 3.3.5 Seite 21 I2.1 IP-Adresse 92.51.175.186: Fehlermeldungen geben aktuellen Dateisystem-Pfad preis Derartige Informationen innerhalb von Fehlermeldungen nicht ausgeben Info 3.1.1 Seite 16 Version 1.0 8 dies ist eine Kopie des gedruckten Dokuments, welches insgesamt 47 Seiten umfasst Sicherheitstest toom Baumarkt GmbH

  1. Feststellung Empfehlung Risiko Referenz

I2.2 IP-Adresse 92.51.175.186: E-Mail-Header gibt eingesetztes PHP-Framework preis Optionale Headerzeile X-Mailer entfernen Info 3.1.2 Seite 17 I2.3 IP-Adresse 92.51.175.186: CakePHP-Schriftzug gibt PHP-Framework preis Schriftzug entfernen