我应该在php中验证/清除$_SESSION变量吗


Should I validate/sanitize $_SESSION variables in php?

我正在构建一个测验网站,在那里我存储了一些变量(回答所需的时间,用户选择哪个答案选项等)在每个问题后的$_SESSION s中——只有在用户完成测试后,我才会将这些统计数据放入数据库。

我已经实现了一些if来检查这些$_SESSION变量是否是数字(is_numeric())。此外,我还验证了长度(strlen())等

  • 但这样做有理由吗
  • 或者在存储之前只real_escape_string()这些就足够了吗在MySQL中
  • 此外,如果会有很多用户,那么这不会给用户带来很大的负担吗服务器

否,因为它们是您自己设置的。

当然,除非你直接从用户输入中推导出它们,在这种情况下,适用于每一位用户输入的规则都是完全相同的。

$_SESSION变量没有什么特别之处。当你从用户那里收到用户输入时,你需要对它进行消毒——不管你是把它存储在数据库、会话中,还是其他什么地方

正如JPod建议的那样,在执行SQL查询时,始终使用准备好的查询,以减少SQL注入。