PHP zonder executie
Ik had een vraag betreffende PHP. Ik had graag in mijn variabele PHP en MySQL verwerkt zonder deze uit te voeren.
Code (php)
1
2
3
2
3
<?php
$bloopp = "'; \$_GET['dtrade_id'] = \"$dtrade_id\"; include (\"https://www.bloopp-it.com/dtrade/itemshare.php\"); echo'";
?>
$bloopp = "'; \$_GET['dtrade_id'] = \"$dtrade_id\"; include (\"https://www.bloopp-it.com/dtrade/itemshare.php\"); echo'";
?>
Later, nadat deze in de database is toegevoegd, met $bloopp terug weergegeven worden in een echo:
Is dit haalbaar en zou iemand mij een zetje kunnen geven a.u.b.? Heb verscheidene andere manieren geprobeerd door delen weg te laten, andere aanhalingstekens te gebruiken, echter zonder succesvol resultaat.
Alvast bedankt voor de hulp!
- Sven
Gewijzigd op 14/08/2014 23:54:41 door Sven Thijssen
Ik neem aan dat je dit bedoeld?
Zet je code anders tussen code-tags om het geheel beter leesbaarder te maken.
Gewijzigd op 14/08/2014 23:50:03 door - Ariën -
Niet helemaal, denk ik. Ik heb de code net een beetje aangepast (o.a. al met de backslash). Ik had graag in de variabele bloopp de echo, waarin hij later wordt geplaatst, gestopt (vandaar ';). Dan, inderdaad, zonder de variabele uit te voeren $_GET['dtrade_id'] = \"$dtrade_id\" ; include (\"https://www.bloopp-it.com/dtrade/itemshare.php\"); gevolgd door het tweede deel van de echo (vandaar echo ').
Gewijzigd op 14/08/2014 23:58:23 door Sven Thijssen
En denk ook eens na of je echt PHP wilt uitvoeren vanuit je database.
Dit is de huidige code:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$bloopp = "\$_GET['dtrade_id'] = '\$dtrade_id'; include ('https://www.bloopp-it.com/dtrade/itemshare.php');";
eval("\$bloopp = \"$bloopp\";");
?>
$bloopp = "\$_GET['dtrade_id'] = '\$dtrade_id'; include ('https://www.bloopp-it.com/dtrade/itemshare.php');";
eval("\$bloopp = \"$bloopp\";");
?>
Sven Thijssen op 15/08/2014 00:14:40:
maar ik kan $bloopp niet in de database toevoegen. Hoe komt dit?
En waarom niet?
Is het zo niet makkelijker?
Code (php)
1
2
3
2
3
<?php
$bloopp = '$_GET["dtrade_id"] = $dtrade_id; include("https://www.bloopp-it.com/dtrade/itemshare.php");';
?>
$bloopp = '$_GET["dtrade_id"] = $dtrade_id; include("https://www.bloopp-it.com/dtrade/itemshare.php");';
?>
En include() met een complete url gaat vast niet werken.
Ja, het werkt feilloos! $bloopp wordt aan de database toegevoegd! Bedankt aan beiden voor jullie hulp!
http://php.net/eval
Quote:
-- Rasmus Lerdorf, BDFL of PHPIf eval() is the answer, you're almost certainly asking the
wrong question.
wrong question.
Inderdaad, wat Ivo zegt. Wat je nu aan het doen bent, lijkt me niet de juiste weg om te bewandelen.
https://www.bloopp-it.com/dtrade/itemshare.php ook veranderlijk is a.d.h.v. $_GET["dtrade_id"].
Misschien heb ik een sprongetje te ver gemaakt en kan ik best $bloopp niet variabel maken door geen PHP in de databsae te plaatsen?
Mmm, dus ik kan (zoals door -Aar- reeds was vermeld) beter geen PHP in de databse opslaan voor veiligheidsredenen? Ik zag het als enige oplossing om $bloopp variabel te houden, aangezien Misschien heb ik een sprongetje te ver gemaakt en kan ik best $bloopp niet variabel maken door geen PHP in de databsae te plaatsen?
wat als iemand de url weet aan te passen naar
http://evil-hacker.com/aanval.txt
als daarin php code staat, dan wordt dat niet uitgevoerd op evil-hacker.com, maar keurig in jouw script geplaatst.
en ook nog uitgevoerd!
Nu heb ik ook een idee wat er mis kan gaan...
Bedankt voor de uitleg. :)
Sven Thijssen op 15/08/2014 16:17:31:
Misschien heb ik een sprongetje te ver gemaakt en kan ik best $bloopp niet variabel maken door geen PHP in de databsae te plaatsen?
Een database is bedoeld om data (gegevens) in op te slaan. Daarom heet het ding ook een DATAbase ;) Het is niet bedoeld om code in op te slaan.
Ozzie PHP op 15/08/2014 17:34:48:
Een database is bedoeld om data (gegevens) in op te slaan. Daarom heet het ding ook een DATAbase ;) Het is niet bedoeld om code in op te slaan.
Zeg dat ook eens tegen de ontwerpers van MySQL (en waarschijnlijk elk ander DBMS). Code van stored procedures wordt gewoon in de database opgeslagen. ;-)
En als je er een beetje over gaat doordenken, slaat zelfs elk versiebeheersysteem alle code op in een database. Ik zie daar ook geen problemen in. Code die in een database staat is eenvoudig toegankelijk vanaf andere systemen. Hooguit is het wijzigen van de code iets lastiger dan wanneer het gewoon in een tekstbestand staat, maar dat kan ook een voordeel zijn.