biggles-1Medlem sedan jan. 2005122 inlägg
nitro2k01 skrev i ett inlägg till mig att " ..... alltid köra användardata som skrivs ut genom htmlspecialchars, både för att undvika problem om ett fält innehåller t ex ett citationstecken, och för att förhindra attacker där någon lyckas peta in Javascript-kod eller annat."
Bra synpunkt tycker jag och vill nu applicera detta, men är osäker på om jag gör rätt.
Så här har jag gjort:
<?php
$poststring .= "<input type='hidden' name='$key' value='htmlspecialchars($val)' />";
?>
Detta får jag ut:
<pre>Array
(
[BuyerFirstName] => htmlspecialchars(Nils)
[BuyerLastName] => htmlspecialchars(XXXXXXXX)
[BuyerEmail] => htmlspecialchars(test@clientdomain.se)
[RefNr] => 8898
[Cost] => htmlspecialchars(37)
[AgentID] => 9999
[Description] => Beställning gjord hos xxxxxxxxxx
[SellerEmail] => order@mindomain.se
[ExtraCost] => 0
[OkUrl] => http://www.mindomain.se/verify.php
[CancelUrl] => http://www.mindomain.se/test-ssc/error.php
[MD5] => 5edeabb5bfb3e77222bf66e8a0a990dcf
[GuaranteeOffered] => 1
)
</pre>
Kan en mottagare som endast förväntar sig informationen UTAN texten "htmlspecialchars", använda parametrarna?
Skall jag göra på något annat sätt?
mvh Nils
EDIT: Har testat mot Paysons testsida, som inte tar emot informationen!
ercizMedlem sedan maj 20011 880 inlägg
htmlspecialchars är en PHP-funktion och måste anropas av php. Skriver man som du har skrivit så kan man bara skriva ut variabler och inte anropa funktioner.
Prova med detta istället:
<input type="hidden" name="<?php echo $key; ?>" value="<?php echo htmlspecialchars($val); ?>" />
biggles-1Medlem sedan jan. 2005122 inlägg
Hej,
Min hjärnan har nog gått varm för du har helt rätt och jag tänkte helt fel, men får det ändå inte att fungera.
Så här ser den fungerande koden ut innan jag vill ändra den:
<?php
$poststring = '';
foreach($fields AS $key => $val){
$poststring .= "<input type='hidden' name='$key' value='($val)' />";
}
?>
Detta fungerar inte efter att jag satt in erciz kod:
<?php
$poststring = '';
foreach($fields AS $key => $val){
$poststring .= "<input type="hidden" name="<?php echo $key; ?>" value="<?php echo htmlspecialchars($val); ?>" />;
}
?>
Var sätts php-sluttagg innan name="" och var sätts sedan starttagen igen?
Ser även att citationstecken används istället för apostrofer, men skall vad jag förstår inte spela någon roll.
Vad missar jag? / Nils
bassebhuMedlem sedan nov. 20014 028 inlägg
<?php
$poststring = '';
foreach($fields AS $key => $val) {
$poststring .= '<input type="hidden" name="' . $key . '" value="' . htmlspecialchars($val) . '" />';
}
?>
biggles-1Medlem sedan jan. 2005122 inlägg
bassebhu,
Tack för snabba besked, du är en pärla!
Koden rinner igenom utan några problem (peppar, peppar ta i trä) så lösningspoängen går till dig!
Ha en trevlig kväll! / Nils
ercizMedlem sedan maj 20011 880 inlägg
biggles-1 skrev:
Ser även att citationstecken används istället för apostrofer, men skall vad jag förstår inte spela någon roll.
Jag tror att citationstecken är det korrekta när det gäller HTML.
biggles-1Medlem sedan jan. 2005122 inlägg
Hej erciz,
Ingen skugga över dig, ledsen om du fick det intrycket. Jag ställde en fråga om just detta i veckan, därav min reflektionen.
http://http://www.webforum.nu/showthread.php?t=182907
Ha en go kväll / Nils
voigtann1Medlem sedan juni 20018 810 inlägg
erciz skrev:
Jag tror att citationstecken är det korrekta när det gäller HTML.
Tyvärr är det bara XHTML som " är korrekt, ' är ok att använda (även om jag tycker det se för hemskt ut att använda sig av).