Zum Inhalt springen

Forum

PHPWelt.net Blog - Ein weiteres tolles WordPress-Blog


PHP Script local testen

Um PHP Scripte local auf seinem Rechner zu testen, empfehle ich: www.uniformserver.com

Es ist keinerlei installation notwendig und es bringt neben einem Apache Webserver, auch PHP und Mysql mit. Perl sollte auch dabei sein, habe ich aber noch nicht probiert :-)


Apache optimieren

Wenn der Apache zuviel Arbeitsspeicher frist ist es unabdingbar. Anfangen kann man mit der Datei server-tuning.conf .
Meine Konfiuartion auf einer VPS mit 128 Mb Arbeitsspeicher. Es kamen zwar ab und zu QoS Meldungen, aber die Reaktionszeit war 1a:

<IfModule prefork.c>
    # number of server processes to start
     StartServers 5
    # minimum number of server processes which are kept spare
     MinSpareServers 10
    # maximum number of server processes which are kept spare
    MaxSpareServers      25
    # highest possible MaxClients setting for the lifetime of the Apache process.
     ServerLimit 150
    # maximum number of server processes allowed to start
     MaxClients 100
    # maximum number of requests a server process serves
    MaxRequestsPerChild  0
</IfModule>

Um die Arbeitspeicherauslastung zu verringern kann man auch ein paar ungenutzte Module deaktivern:

vi /etc/sysconfig/apache2

In der Zeile “APACHE_MODULES=…” alle nicht benötigten Module rausnehmen

Infos über die Module: Apache 2.2 bzw. Apache 2.0

Alternativ: Lighttpd installieren, das eine menge Resourcen, ist aber umständlicher zu konfigurieren da u.a. keine .htaccess gibt.


Wie kann ich meinen Server absichern?

Ein Webserver sendet von Haus aus viele Informationen mit um sich zu identifizieren. Dem normalen Webseiten besucher nützen die Zusatzinformationen recht wenig. Sie werden eigentlich nur für Statistikzwecke verwendet. Eigentlich.. uneigentlich kann ein angreifer so verwundbare Systeme erkennen. So sendet der Server z.B. folgendes: “Apache/1.3.27 (Linux/SuSE) PHP/4.3.1″ Ist nun im Apache oder PHP dieser Version ein Fehler, ist es für den Angreifer einleichtes. Um es potentiellen Angreifern etwas zu erschweren kann man die mitgesanten Informationen etwas beschneiden.
Apache
In der http.conf den Eintrag “ServerToken Prod” editieren/erstellen.
Lighttpd
in der lighttpd.conf den Eintrag server.tag editieren/erstellen.
PHP
Bei PHP lässt sich die Ausgabe nur unterdrücken und leider nicht modifizuiern. Editiere/erstelle dazu in der php.ini den Eintrag expose_php und setze in auf off.

Sonstige
Nicht nur der Webserver “verrät” potentielle Sicherheitslücken, sondern auch die FTP-Software ist gesprächig:
vsFTPD
In der vsftpd.conf den Eintrag ftpd_banner editieren/erstellen.


HTTP-Statuscodes

Da ich die HTTP-Statuscodes nun zum, x-mal ewig gesucht habe und sie immer wieder benötige…

<?php
   header( 'HTTP/1.1 404 Not Found' );
   header( 'Status: 404 Not Found' );
   header( 'Connection: close' );
   echo "404";
   exit;
?>

1xx Informational
100 Continue
101 Switching Protocols
2xx Successful
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3xx Redirection
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
306 (Unused)
307 Temporary Redirect
4xx Error
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Long
415 Unsupported Media Type
416 Requested Range Not Satisfiable
417 Expectation Failed
5xx Server Error
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported