PHP-Parameter mit htaccess weiterleiten
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfang
apache
array
beispiel
code
datei
hilfe
http
index
jemand
krimskrams
machen
modul
parameter
problem
sinn
software
url
vermeiden
weiterleitung
-
Hallo lima-city Community,
ich habe folgendes Problem:
Ich möchte vermeiden das auf meiner Seite mit Hilfe von SQL-Injection rumgehackt wird, dazu habe ich die Seite so programmiert das Sie ohne PHP-Parameter wie zum Beispiel hier:
mit Parameter:
www.software-brosch.lima-city.de?siteno=1
ohne Parameter:
www.software-brosch.lima-city.de
Nun möchte ich mit Hilfe von htaccess eine Weiterleitung einrichten welche alle URL's welche mit einem solchen Parameter weiterleitet zur gleichen URL nur ohne die Parameter. Ich habe kaum Kenntnisse was die komische Syntax in htaccess angeht. Google konnte mir auch nicht weiterhelfen.
Kann mir jemand den Code für diese Weiterleitung hier posten?
Falls jemand ein Tutorial findet oder kennt welche die Syntax gut erklärt dann her damit.
Vielen Dank schonmal im vorraus und Gruß
S.Brosch -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hey ;)
Wenn der einzige Grund für diese htaccess Sache tatsächlich die Furcht vor SQL Injections via GET-Parameter ist, solltest du das anders verhindern.
a) Verwende niemals $_GET direkt in einer SQL Anweisung, es sei denn, du hast das ganze Array vorher von Magic Characters befreit.
b) Verwende parametrisierte SQL Statements.
Erkundige dich mal zu diesen Themen, und wenn du dann noch Fragen dazu hast, kannst du ja weiter hier nach Hilfe suchen. Von der Sache mit .htaccess würde ich dir (für diesen Zweck) abraten.
lg
Sincer -
Wieso kompliziert wenn es auch einfach geht? $_POST ist nicht unbedingt sicherer als $_GET. Es stimmt: man sollte unbedingt einige Regeln einhalten!!! Wenn du doch vorher weisst das sich der Wert in deiner $_GET-Variable immer eine Zahl ist, warum fragst du das nicht serverseitig ab?
Beispiel:
// is_numeric gibt true zurück wenn der Wert numerisch ist
if(is_numeric($_GET['siteno'])){ ... }
Jetzt wird es für einen Hacker schwierig Code einschleusen zu können.
Beitrag zuletzt geändert: 1.8.2011 11:54:28 von krimskrams -
Ich glaube ihr versteht mein Problem nicht ganz! Ich möchte lediglich eine Weiterleitung wie im Beispiel oben beschrieben durchführen und das mit Hilfe der .htaccess Datei. Es sollen einfach keine PHP-Parameter angegeben werden dürfen. Und wenn welche angegeben werden dann soll er umleiten so das es zu keiner Aktion kommt.
Gruß S.Brosch -
Verwende in dem Script einfach keine Get-Parameter und wenn es sich um ein fremdes Script, das du nicht umschreiben willst, handelt, schreibe ganz am Anfang
$_GET = array();
-
drafed-map schrieb:
Verwende in dem Script einfach keine Get-Parameter und wenn es sich um ein fremdes Script, das du nicht umschreiben willst, handelt, schreibe ganz am Anfang$_GET = array();
Na darüber würde ich nochmal nachdenken ;) -
Wir gehen mal davon aus das sein PHP-Script nicht ohne die $_GET-Variablen funktioniert. Welchen Sinn macht dann noch dein Vorschlag?
Vielleicht bringt dich ja das Apache Modul mod_rewrite weiter?
Schau mal hier:
http://www.modrewrite.de/
Beitrag zuletzt geändert: 2.8.2011 0:12:46 von krimskrams -
Es kann aber sein, dass er ein fremdes Script, welches auf Parameter reagiert, diese aber nicht zwangsläufig benötigt, nutzt, aus welchem Grund auch immer nicht will, dass die Parameter angegeben werden können, aber zu faul ist - oder nicht das notwendige Wissen besitzt - , das Script um zu schreiben. In diesem Fall macht die Zeile, die ich vorgeschlagen habe, durchaus Sinn. Und wenn das von mir soeben Beschriebene nicht zutrifft, wieso sollte er dann wollen, dass per .htaccess-Datei dafür gesorgt wird, dass keine GET-Parameter angegeben werden können?
Er will, dass keine GET-Parameter angegeben werden können und genau das geht mit der Zeile Code, die ich gepostet hab. -
Also ich erkläre mal mein Anliegen detailliert:
Ich verwende keinerlei CMS oder sonstiges Redaktionelles System, sondern programmiere alles per Hand und lagere bestimmte teile einfach in PHP-Dateien aus um diese dann einbinden zu können und so einfacher warten oder ändern zu können. Ich verwende wie ihr vielleicht gesehen habt eine Suche welche ohne Parameter in der URL auskommt (Google hat ja eine ziemlich lange Liste an Parameter in der URL). Gelöst habe ich das mit Hilfe eines Cookies welches gesetzt wird und nach einer Aktualisierung der Ergebnisseite wieder verworfen wird.
Durch diese Lösung benötige ich auf meiner Website keinerlei URL-Parameter!
Falls ich später aber mal eine Datenbank benötige um Informationen abspeichern zu können möchte ich vermeiden das jemand versucht mit Hilfe einer SQL-Injection in der URL dort einzudringen. Daher möchte ich alle URL die mit einem ? nach dem .php weitergeführt werden, im Prinzip abgeschnitten werden.
Beispiel:
www.brosch-software.de/index.php?param1=test
soll nach
www.brosch-software.de/index.php
weitergeleitet werden.
Um den Schutz der $_GET-Variablen kümmere ich mich später, erstmal ist diese Weiterleitung mir sehr wichtig.
krimskrams schrieb:
Damit haben nur Suchmaschinen Probleme deine Website zu indizieren und nicht zuletzt wie sollten User dann Bookmarks im Browser speichern.
Warum sollen da Suchmaschinen Probleme haben wenn keine Parameter angegeben werden können. Wenn ein Parameter angegeben wird so hat dies keinerlei Wirkung. Das gleiche mit Bookmarks. Da der Nutzer nur Bookmarks von Seiten anlegen kann die ohne Parameter auskommen kann er nichs falsch machen.
Gruß S.Brosch -
In dem Fall bringt es dir nichts, GET-Parameter aus zu sperren. Deaktiviere einfach register globals, da es sonst viele weitere Möglichkeiten gibt, eine SQL-Injection und Schlimmeres durch zu führen. Dir werden sonst fast alle anderen Superglobals zum Verhängnis.
-
Ja wie gesagt, soweit ich dir folgen kann benötigst du dafür das Apache-Modul mod_rewrite. Ob das hier auf dem Server installiert ist siehst du wenn du folgendes script ausführst:
<?php echo phpinfo(); ?>
Wenn ich dich richtig verstehe, dann suchst du sowas hier:
http://www.modrewrite.de/mod-rewrite/beispiele/statische-url/
In dem Beispiel wird von
seite.php?id=12
nach
seite_12.html umgeleitet.
In deinem Fall von
www.brosch-software.de/index.php?param1=test
nach
www.brosch-software.de/index.php
Musst du dich mal ein wenig einlesen und das Script ein wenig anpassen. Vorraussetzung ist das Apache Modul. Viele Hoster installieren das aus Sicherheitsgründen nicht.
Beitrag zuletzt geändert: 2.8.2011 11:01:34 von krimskrams -
Nein, das braucht er nicht, er will nur, dass keine Parameter beim Script ankommen.
-
drafed-map schrieb:
Nein, das braucht er nicht, er will nur, dass keine Parameter beim Script ankommen.
Kennt ihr euch? *grins* In seinem ersten Posting war doch eindeutig von "komische Syntax in htaccess" die Rede. Wollen wir ihn nicht selbst antworten lassen?
Beitrag zuletzt geändert: 2.8.2011 19:30:10 von krimskrams -
Ich formuliere mein Problem mal kurz und bündig:
Ich möchte eine Weiterleitung winrichten von allen Seiten mit PHP-Paramtern in der URL (z.B.: www.brosch-software.de/index.php?a=a) und möchte diese dann auf die gleiche Seite ohne PHP-Parameter weiterleiten (z.B: www.brosch-software.de/index.php).
Alles andere vergesst ihr mal da dies anscheinend echte Probleme bereitet.
Probleme habe ich hauptsächlich mit der Syntax von htaccess. Es wäre also schon wenn jemand einen fertigen oder ähnlichen Code hier posten kann.
Für die bisher geleistete Hilfe möchte ich mich schonmal bedanken, hat mir allerdings bisher kaum geholfen.
krimskrams schrieb:
Kennt ihr euch?
Nein.
Gruß S.Brosch -
Hallo software-brosch,
um dein Problem zu lösen, brauchst du mod rewrite (http://www.modrewrite.de/).
allerdings hat das nicht allzu viel sinn, denn wenn du in deinem script ohnehin keine $_GET variablen verwendest, kann damit auch niemand eine SQL injection durchführen ;) - es sei den du hast register_globals ein, was du aber ohnehin vermeiden solltest.
Beispiele wie du mod rewrite verwendest, dürftest du genügen finden, einfach mal googlen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage