在教程中,由于安全原因,将PHP_SELF放入htmlspecialchars()非常重要:
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
如果你不使用它会有什么不安全感?
谢谢!
答案 0 :(得分:3)
htmlspecialchars
使用&amp; -escaped实体替换HTML中具有特殊含义的字符。因此,例如,'
变为'
。但是,它不会将%22
转换为"
,因为%22
在HTML中没有特殊含义,因此无需修改就可以安全地显示它。
如果您希望表单由用于显示表单的网址处理,请始终使用action=""
而不是action=<?=$_SERVER['PHP_SELF']?>
或action=<?=$_SERVER['REQUEST_URI']?>
。
正如您已经发现的那样,如果您使用$_SERVER
变量之一,则存在跨站点脚本(XSS)的严重风险,因为它们包含用户输入,因此无法信任。因此,除非您有充分的理由需要以某种方式调整URL,否则只需使用action=""
。