string ausrechnen

Operator_Jon

Erfahrenes Mitglied
HI!
Ich habe einen String, da steht drin..., ka 5+3!
Wie kann ich den ausgerechnet ausgeben?

thx
cu
 
Zuletzt bearbeitet:
In dem du einen Parser schreibst der dir Arithmetische
Operatoren herausliest und durchführt. Das geht
aber schon an das eingemachte, besonders wenn es
nicht nur darum geht das er nur 2 Operanden berechnungen
durchführt.
 
Original geschrieben von Matthias Reitinger
Öhm...
PHP:
$string = "2+3*5";
eval("\$ergebnis = ".$string.";");

Oder wie, oder was...

Bitte Bitte keine Userangaben anhand eval durchführen.
Mir graut vor der eingabe des Users:
3; exec('cat /etc/passwd',$out); foreach($out as $k=>$v) echo $v;;

Diese Funktion gehört so oder so verboten.
Dennoch sollte das so gehen.
 
Wer sagt denn dass es sich um eine Usereingabe handelt? :)

Ungeprüft würd ich sowas vom User natürlich nicht durch ein eval jagen... ein if (preg_match("=^[0-9+\-*/]+\$=", $string)) davor und schon kann nix (schlimmes) mehr passieren :)

// edit: Ein Admin der dem httpd/php Zugriff auf /etc/passwd gibt gehört eh erschlagen ;)
 
Zuletzt bearbeitet:
Matthias Reitinger hat gesagt.:
Wer sagt denn dass es sich um eine Usereingabe handelt? :)
Ich gehe stark davon aus. Denn programmgesteuert einen String zu kreiren der
eine Berechnung durchführt ist schon etwas "seltsam".
Alternative könnte sein das jene Berechnungen durch ein in ein File bzw DB gespeicherten
String entsteht, dann stellt sich die Frage, wer darf diesen da reinstellen :-)
das geht dann aber etwas zuweit.

Matthias Reitinger hat gesagt.:
Ungeprüft würd ich sowas vom User natürlich nicht durch ein eval jagen... ein if (preg_match("=^[0-9+\-*/]+\$=", $string)) davor und schon kann nix (schlimmes) mehr passieren :)
Gib mir etwas Zeit und ich bastel dir dennoch etwas gefährliches draus :)

// edit: Ein Admin der dem httpd/php Zugriff auf /etc/passwd gibt gehört eh erschlagen ;)
Nein denn die /etc/passwd ist standardmässig auf readable für alle.
-rw-r--r-- 1 root root 1081 2004-01-07 13:09 /etc/passwd

Grund ist viele Programme benötigen die Persöhnliche Informationen die dort drinne
stehen. Das passwort steht natürlich in der /etc/shadow.passwd oder ähnlich
verschlüsselt.

Dennoch, ist jede Information die in der passwd steht eine Gefahrenquelle.
 
Original geschrieben von Christian Fein
Gib mir etwas Zeit und ich bastel dir dennoch etwas gefährliches draus :)
Will sehen ;)

Nein denn die /etc/passwd ist standardmässig auf readable für alle.
-rw-r--r-- 1 root root 1081 2004-01-07 13:09 /etc/passwd
Wieder was dazu gelernt :) Dennoch denke ich, dass die meisten WWW-Server wohl darauf konfiguriert sind, den Lesezugriff durch den Kunden auf solcherlei Systemdateien zu verweigern. Aber prinzipiell hast du natürlich mit dem Sicherheitsrisiko recht. Ein "rm * -rf" reicht ja auch schon, wenn man keine regelmäßigen Backups macht...
 
Original geschrieben von Matthias Reitinger
Ein "rm * -rf" reicht ja auch schon, wenn man keine regelmäßigen Backups macht...
Das würde wiederrum nicht gehen, da wie gesagt einzig und allein leserecht herrscht. :)

PS: Du kannst davon ausgehen das auf sämmtlichen root Servern das leserecht auf /etc/passwd existiert.
Mann sollte dies natürlich einschränken durch gezieltes Gruppenmanagment.
Aber das ist nicht ganz einfach.

Ich beschwer mich nicht ohne Grund über root Server für jedermann.


Aber ich glaube wir gleiten ins OT ab :)
 
Zurück