を助け、彼が得る他の文字が欠けているならば、私はわかりませんよあなたのDBで何かが失敗するか、悪化する可能性がありますが、XSSの脆弱性を引き起こします。だからではなく、それが実行して、この1つの場合で作業することで:
$url = str_replace('+', '%2B', $url);
あなたは代わりに、それはすべて例のために働くようにしたいです。だから、あなたは、データベースから次いると仮定すると:
$file_path = 'farm/1234_animal_fred+sam_cats';
あなたがurlencode()
を行う必要があるURLの一部として正しく、この作業を行うには、しかしthis answerからあなたはそれがXSS攻撃からあなたを守るために十分ではないことがわかります。そのため、文字列にhtmlspecialchars()
を使用する必要があります。
$url = 'https://mypage/main.php?dir=';
$file_path = 'farm/1234_animal_fred+sam_cats';
$url .= htmlspecialchars(urlencode($file_path));
echo $url; // https://mypage/main.php?dir=farm%2F1234_animal_fred%2Bsam_cats
そして、このURLに行くときには、PHP、正しい値を取得していることがわかります。
print_r($_GET) output:
Array
(
[dir] => farm/1234_animal_fred+sam_cats
)
はあなたのURLに '+'使用しないでください代わりに '%2B'; https://mypage/main.php?dir = farm/1234_animal_fred%2Bsam_cats – Unex
ありがとう、ありがとうございます! – Jarla
最初に '1234_animal_fred + sam_cats'パーツがどのように生成されますか? – Mike