我正在将
PHPSESSID传递给
PHP页面(通过POST),我想知道什么是消毒输入的最佳方法. MysqL_real_escape_string会不够?在处理会话ID时我应该考虑一些特殊问题(我的意思是,它们只能是字母和数字吗?)?
编辑:
为了澄清这个问题,我真正想知道的是:如果有人篡改POST数据,他是否可以发送一个恶意字符串作为PHPSESSID,当我调用session_id($_ GET [‘PHPSESSID’])时会发生令人讨厌的事情?
我个人想不到任何东西,但比抱歉更安全…
谢谢
尼科
好的想法,但据我所知,没有必要消除这种意见. PHPSESSID将传递给session_id().
session_id确实有some limitations:
Depending on the session handler,not all characters are allowed within the session id. For example,the file session handler only allows characters in the range a-z A-Z 0-9,(comma) and – (minus)!
但session_id()应该使用错误消息处理与这些规则的偏差. (您可能希望捕获该错误消息并在出错时终止脚本.)
我能看到的唯一真正的危险是当你使用自定义会话处理程序,例如连接到数据库.在这种情况下,您将不得不清理输入,例如使用MysqL_real_escape_string().但是,这应该发生在自定义会话处理程序中.
不言而喻,如果您在某些其他上下文中使用会话ID(例如,作为HTML表单中的参数),则需要采取特定输出所需的卫生措施(在这种情况下,htmlspecialchars()).