为什么我们使用htmlspecialchars($ _ SERVER ['PHP_SELF'])

时间:2015-03-26 14:28:38

标签: php html

在教程中,由于安全原因,将PHP_SELF放入htmlspecialchars()非常重要:

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">

如果你不使用它会有什么不安全感?

谢谢!

1 个答案:

答案 0 :(得分:3)

htmlspecialchars使用&amp; -escaped实体替换HTML中具有特殊含义的字符。因此,例如,'变为&#039;。但是,它不会将%22转换为&quot;,因为%22在HTML中没有特殊含义,因此无需修改就可以安全地显示它。

如果您希望表单由用于显示表单的网址处理,请始终使用action=""而不是action=<?=$_SERVER['PHP_SELF']?>action=<?=$_SERVER['REQUEST_URI']?>

正如您已经发现的那样,如果您使用$_SERVER变量之一,则存在跨站点脚本(XSS)的严重风险,因为它们包含用户输入,因此无法信任。因此,除非您有充分的理由需要以某种方式调整URL,否则只需使用action=""