消毒PHPSESSID

nic*_*ico 8 php session sanitization

我将PHPSESSID传递给PHP页面(通过POST),我想知道什么是消毒输入的最佳方法.就mysql_real_escape_string足够了?在处理会话ID时我是否应该考虑一些特殊问题(我的意思是,它们只能是字母和数字吗?)?

编辑: 为了澄清这个问题,我真正想知道的是:如果有人篡改POST数据,他是否可以发送一个恶意字符串作为PHPSESSID,当我打电话时会做一些令人讨厌的事情session_id($_GET['PHPSESSID'])?我个人想不出任何东西,但比抱歉更安全...

谢谢

尼科

Pek*_*ica 7

很好的想法,但据我所知,没有必要消除这种意见.PHPSESSID将被传递给session_id().

session_id确实有一些限制:

根据会话处理程序,会话ID中不允许所有字符.例如,文件会话处理程序仅允许az AZ 0-9,(逗号)和 - (减号)范围内的字符!

但是session_id()应该使用错误消息来处理与这些规则的偏差.(您可能希望捕获该错误消息并在出错时终止脚本.)

我能看到的唯一真正的危险是当你使用自定义会话处理程序时,例如连接到数据库.在这种情况下,您不得不清理输入,例如使用mysql_real_escape_string().但是,这应该发生自定义会话处理程序中.

不言而喻,如果您在某些其他上下文中使用会话ID(例如,作为HTML表单中的参数),则需要采取特定输出所需的卫生措施(在这种情况下htmlspecialchars()).

  • 谢谢Pekka,这就是我的想法,但我认为问一个愚蠢的问题比做一个愚蠢的错误更好!:) (4认同)