nic*_*ico 8 php session sanitization
我将PHPSESSID传递给PHP页面(通过POST),我想知道什么是消毒输入的最佳方法.就mysql_real_escape_string足够了?在处理会话ID时我是否应该考虑一些特殊问题(我的意思是,它们只能是字母和数字吗?)?
编辑:
为了澄清这个问题,我真正想知道的是:如果有人篡改POST数据,他是否可以发送一个恶意字符串作为PHPSESSID,当我打电话时会做一些令人讨厌的事情session_id($_GET['PHPSESSID'])?我个人想不出任何东西,但比抱歉更安全...
谢谢
尼科
很好的想法,但据我所知,没有必要消除这种意见.PHPSESSID将被传递给session_id().
session_id确实有一些限制:
根据会话处理程序,会话ID中不允许所有字符.例如,文件会话处理程序仅允许az AZ 0-9,(逗号)和 - (减号)范围内的字符!
但是session_id()应该使用错误消息来处理与这些规则的偏差.(您可能希望捕获该错误消息并在出错时终止脚本.)
我能看到的唯一真正的危险是当你使用自定义会话处理程序时,例如连接到数据库.在这种情况下,您将不得不清理输入,例如使用mysql_real_escape_string().但是,这应该发生在自定义会话处理程序中.
不言而喻,如果您在某些其他上下文中使用会话ID(例如,作为HTML表单中的参数),则需要采取特定输出所需的卫生措施(在这种情况下htmlspecialchars()).