我应该在PHP中验证/清理$ _SESSION变量吗?

joe*_*007 8 php mysql session

我正在构建一个测验站点,在$_SESSION每个问题之后我存储一些变量(回答时间,用户选择哪个答案选项等等)- 我只是在用户完成后将这些统计信息放入数据库中测验.

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

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

Ben*_*aum 8

不,因为你自己设置它们.

除非您直接从用户输入中推断出它们,在这种情况下,适用于每一位用户输入的完全相同的规则适用.

$_SESSION变量没有什么特别之处.当您从用户收到用户输入时,无论是将其存储在数据库,会话等中,都需要清理用户输入.

就像JPod建议的那样 - 在执行SQL查询时 - 总是使用准备好的查询来缓解SQL注入.

  • 哦好吧我不知道用户不能以某种方式重写$ _SESSION.非常感谢你 :) (3认同)
  • @ joe007前端用户没有直接访问`$ _SESSION`,_你是那个放东西的人.如果你清理输入_before_,你把它放在会话变量中(并且你应该总是这样做),它不会神奇地变得不安全.更一般地说,你应该虔诚地消除从客户那里得到的一切,而不是怜悯 - 它必须清晰,一致,明确并且在一个地方.毫无疑问,哪些数据是脏的,哪些数据是干净的. (2认同)