清洁吗?当它不输出为HTML或进入SQL查询时


Sanitize? When it doesn't output as HTML nor go into an SQL query

在浏览了一些网站(例如https://www.owasp.org/index.php/Main_Page)后,我发现没有明确提到下面的过程会给我带来什么危险;

用户回答一个选择题。发送一个隐藏字段为"answerswer"的表单

.php页面接受它(验证它少于100个字符),然后从数据库中获取正确答案。它比较两个值(使用==比较操作符)

然后

发送
 echo "Wrong! The correct answer is ".$correctAnswer; //a hack presumably will always be wrong!!!
基本上,让用户输入(最多100个字符)卡在 中会有什么损害呢?
$playersAnswer = $_POST['checkAnswer'];

 if ($correctAnswer == $playersAnswer){ ....etc

对我来说,优点是我不需要担心用户回答中的任何字母/符号/字符被剥离或转换。因此,我可以毫无畏惧地使用带标点符号的问题,外语甚至关于javascript的问题!

如果你只是在比较中使用POST变量:

$correctAnswer == $playersAnswer

这没有危险。

危险从使用变量开始——在HTML输出中、在数据库查询中、在exec()eval()命令中.....