Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Meine PHP-Seite ist unsicher! (https://www.delphipraxis.net/36670-meine-php-seite-ist-unsicher.html)

silentAMD 23. Dez 2004 12:28


Meine PHP-Seite ist unsicher!
 
hi,

ich habe mich nun nach langem html proggen zu php weitergetraut, und meine seite komplett auf php umgeschrieben. alles geht zwar um einiges einfacher mit php, nur jeder depp kann meine seiten verhunzen, weil ich alle möglichen weitergegebenen variablen direkt anzeigen lasse und jeder kann da mit seinem eigenen php-code alles verhunzen!

wie kann man ALLE variablen die von einem dokument zum anderen weitergegeben werden, so formatieren, dass sie nur den html-code anzeigen (also z.b.

Code:
$mod=get_html_translation_table(HTML_SPECIALCHARS);
if(isset($load)) $load=strtr($load, $mod);
)?

ich hab nämlich keine lust, alle variablen extra so umzuschreiben (1. wegen der größe der index.php und 2. wegen dem aufwand)


PLEASE HELP!!!!


PS: ich weisss schon selbst, warum ich meine homepage nicht angegeben habe... :wink:

Mamphil 23. Dez 2004 12:33

Re: Meine PHP-Seite ist unsicher!
 
Hi!

Was bitte willst du machen? Irgendwie verstehe ich dein Problem nicht richtig. Gib bitte mal ein bisschen mehr Code von deiner Seite bzw. den Link zu der Seite, mit der du das Problem hast.

Mamphil

silentAMD 23. Dez 2004 12:57

Re: Meine PHP-Seite ist unsicher!
 
naja hier en bissel code:


<?php
echo "<H2>$loc</H2>\n"; //übergebende variable ist §loc
$filenamen="data/$loc.inc.php";
include($filenamen);
?>

(also stark vereinfacht) aber so in etwa ist es un dan auf der page mit noch mehr eigenschaften für texte usw...


also mein problem: für $loc kann man beliebigen html-code und php-code eintragen und die seite verändern und auf geschützten inhalt zugreifen... das will ich nicht.

wie kann man $loc und alle anderen variablen zu stinknormalem html code machen? also wie ... zu &#133 ihr wisst wahrscheinlich schon was ich meine?


PLEASE HELP

Meflin 23. Dez 2004 13:15

Re: Meine PHP-Seite ist unsicher!
 
htmlspecialchars($variable)

silentAMD 23. Dez 2004 16:09

Re: Meine PHP-Seite ist unsicher!
 
hi!

thanx für deine einfachere lösung Melfin! (hab sie allerdings noch net ausprobiert... :oops: )

gibt es keine lösung, einfach ALLE variablen so zu formatieren??


PLEASE HELP!!

Mamphil 23. Dez 2004 16:50

Re: Meine PHP-Seite ist unsicher!
 
Hi!

Code:
// Alle $_REQUEST-Variabeln umformatieren:
foreach ($_REQUEST as $name => $value)
  $_REQUEST[$name] = htmlspecialchars($value);
Du musst dann allerdings immer mit $_REQUEST['deinVariablenName'] arbeiten (?)

Mamphil

silentAMD 23. Dez 2004 17:34

Re: Meine PHP-Seite ist unsicher!
 
naja...aber ich erspar mir damit fast nix, weil ich ja alle variablen in ein array schreiben muss oder so...aber gefällt mir schon besser als alles einzeln zu formatieren...

THANX!!!!

Mamphil 23. Dez 2004 18:06

Re: Meine PHP-Seite ist unsicher!
 
Nein, das Array $_REQUEST existiert schon. Es enthält alle Variablen, die per POST (z. B. über Formulare) oder per GET (in der URL) übergeben werden.

Mamphil

sECuRE 23. Dez 2004 18:15

Re: Meine PHP-Seite ist unsicher!
 
Hi,

dem User den includepath anzuvertrauen halte ich für grob fahrlässig :(
Wenn der nun index.php?loc=../../../../../etc/passwd aufruft?
Definier lieber ne Tabelle mit allen möglichen sicheren Includepaths und überprüfe die dann, zb so:

Code:
$valid_paths = array("index","news","content","guestbook");
$valid = false;
foreach ($valid_paths as $vp)
 if ($vp == $_GET['loc']) // das erspart dir die (unsichere) Einstellung register_globals = on
  $valid = true;

if (!$valid) // Hier evtl noch um einen Logeintrag ergänzen, falls du von solchen Versuchen was mitbekommen willst
 Die("Dies ist kein gueltiger Pfad!");

include($loc.".php");
cu

silentAMD 23. Dez 2004 18:24

Re: Meine PHP-Seite ist unsicher!
 
... oh sorry jetzt weiss ich was du meinst... da kann ja dann jeder benutzer auf mein gästebuch und gesicherte daten zugreifen... das muss ich schnellstens lösen...

Mamphil 25. Dez 2004 13:53

Re: Meine PHP-Seite ist unsicher!
 
Hi!

... oder du musst überprüfen, dass bestimmte Zeichen ('.', '/') nicht im Include-Pfad auftauchen dürfen. Wenn du das sauber machst, ist die Seite gleich um einiges sicherer.

Frohe Weihnachten!
Mamphil

silentAMD 27. Dez 2004 12:10

Re: Meine PHP-Seite ist unsicher!
 
hi!

ich hab mich ma hingesetzt und ne eigene möglichkeit aus beiden versionen gemacht, wenns was zu bemängeln oder verbessern gibt, sofort sagen! :wink:

Code:
define("FAIL", "fehler");

$ordner  = "data";
$trenner = " ... ";
$fileext = ".txt";

$handle  = opendir($ordner);

  while ($file = readdir ($handle))
    if(($file != ".") && ($file != "..") && (!is_readable($file)))
      $possibles[count($possibles)] = ereg_replace($fileext, "", $file); //dateiendung löschen

closedir($handle);

$possibles = array_merge($possibles, array("hier", "weitere", "menüpunkte", "ohne dateiendung"));

if(!isset($loc))
  $loc = "home";

if(!in_array($loc, $possibles))
  $loc = FAIL;

if((isset($load)) && (!in_array($load, $possibles)))
  $load = FAIL;

//... hier noch html code fürs menu usw...

$filenamen = "$ordner/$loc$fileext";

if(!file_exists($filenamen))
  echo "<H3>Die Seite wurde nicht gefunden. Schade!</H3>";
else {
  echo "<H2>$loc</H2>\n";
  include($filenamen);
}

//... und wieder html code...

noch etwas: wie kann man das verein fachen (is ne beschissene möglichkeit muss ich zugeben...):

Code:

Du befindest dich hier: <?php
$locfail = ($loc == FAIL);
$loadfail = ($load == FAIL);

if($locfail)
  echo "[I]";

echo $trenner,$loc;

if($locfail)
  echo "[/I]";

if(isset($load)){
  if($loadfail)
    echo "[I]";
  echo "$trenner$load";
  if($loadfail)
    echo "[/I]";
}

?></P>
also ich meine, dass bei dem fall, dass $locfail TRUE ist, die $loc-variable (die dann den inhalt fehler hat) kursiv angezeigt wird. ich muss mit meiner möglichkeit 4 mal abfragen ob es nun so ist.
gibt es keine string-funktion, die das vereinfacht?


PLEASE HELP!!

Mamphil 27. Dez 2004 16:32

Re: Meine PHP-Seite ist unsicher!
 
Hi!

Zitat:

Zitat von silentAMD
PLEASE HELP!!

Ja, mach ich. Aber erst, wenn ich den Code lesen kann.

Bitte einfach mal nach den PEAR Coding Standards formatieren. Dann ist er schlichtweg übersichtlicher :mrgreen:

Mamphil

silentAMD 27. Dez 2004 17:06

Re: Meine PHP-Seite ist unsicher!
 
@Mamphil: ich hoffe so ist's besser zu lesen... :mrgreen: (siehe oben)

silentAMD 28. Dez 2004 12:00

Re: Meine PHP-Seite ist unsicher!
 
lol..da hab ich glück gehabt (hoffe meine seite is jetzt sicher):

PC-Welt - PHP im Visier: Santy-Wurm weitet seinen Angriff aus

Mamphil 28. Dez 2004 12:40

Re: Meine PHP-Seite ist unsicher!
 
Hi!

1.) Guck dir mal die Seite http://www.php-faq.de/ an.
2.) Interessant ist http://www.php-faq.de/ch/ch-security.html und darin http://www.php-faq.de/q/q-sicherheit-parameter.html
3.) Guter Code / Schlechter Code: http://www.php-faq.de/ch/ch-code.html insbesondere http://www.php-faq.de/q/q-stil-anfuehrungszeichen.html (ich persönlich verzichte weitestgehend auf die doppelten Anführungszeichen und setze praktisch alles in einfache)

4.) Vereinfachen kann man das ganze, indem du eine If-Konstruktion baust, in der der String mit den [i]-Tags zusammengebaut wird:
Code:
if ($locfail)
    $output = '[i]'.$trenner.$loc.'[/i]';
else
    $output = $trenner.$loc;

echo $output;

// analog für load...
Mamphil


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz