首页 / 知识
PHP会话安全
2023-04-11 13:27:00

PHP Session Security用PHP维护负责的会话安全性有哪些准则? 网络上到处都有信息,现在是时候将它们全部集中在一个地方了! 为了确保会话安全,需要执行以下几项操作: 一种准则是,每次会话的安全级别更改时,都要调用session_regenerate_id。这有助于防止会话劫持。 我的两分(或更多分):
关于此主题有一本很小但很好的书:Chris Shiflett撰写的Essential PHP Security。 基本的PHP安全性/d/file/2023041113/qpf3q0bdjpq05.webp 在本书的首页上,您会找到一些有趣的代码示例和示例章节。 您可以使用上述技术(IP和UserAgent),在此进行介绍:如何避免身份盗用
我认为主要问题之一(在PHP 6中已解决)是register_globals。现在,用于避免 做到这一点的"正确"方法(从5.2版本开始,虽然那里有些小虫子,但是从6开始稳定,即将推出)是通过过滤器。 所以代替:
你会做:
甚至只是:
此会议注视文件提供了很好的指示,指出了攻击可能发生的地方。另请参阅Wikipedia上的会话固定页面。 根据我的经验,使用IP地址并不是最好的主意。例如;我的办公室有两个IP地址会根据负载使用,我们在使用IP地址时经常遇到问题。 相反,我选择将会话存储在服务器上域的单独数据库中。这样,文件系统上的任何人都无法访问该会话信息。这对于3.0之前的phpBB确实很有帮助(它们已经修复了此问题),但是我认为这仍然是一个好主意。 php.ini
eq Apache添加标头:
我像这样设置会话 在登录页面上:
(短语在配置页面上定义) 然后在网站其余部分的标题上:
PHP会话和安全性的主要问题(会话劫持除外)与您所处的环境有关。默认情况下,PHP将会话数据存储在OS的temp目录中的文件中。无需任何特殊考虑或计划,这是一个世界可读的目录,因此您的所有会话信息对有权访问服务器的任何人都是公开的。 至于在多台服务器上维护会话。到那时,最好将PHP切换到用户处理的会话,在该会话中它将调用您提供的函数以CRUD(创建,读取,更新,删除)会话数据。届时,您可以将会话信息存储在数据库或类似于解决方案的内存缓存中,以便所有应用程序服务器都可以访问数据。 如果您在共享服务器上,则存储自己的会话也可能是有利的,因为它将使您将其存储在数据库中,而数据库通常比文件系统具有更多的控制权。 这是非常琐碎且显而易见的,但是请确保每次使用后都使用session_destroy。如果用户未明确注销,则可能难以实现,因此可以设置一个计时器来执行此操作。 这是有关setTimer()和clearTimer()的很好的教程。 您需要确保会话数据是安全的。通过查看您的php.ini或使用phpinfo(),您可以找到会话设置。 _session.save_path_告诉您它们的保存位置。 检查文件夹及其父文件夹的权限。它不应该是公共(/ tmp)或共享服务器上的其他网站可以访问的。 假设您仍要使用php会话,则可以通过更改_session.save_path_来将php设置为使用其他文件夹,或者通过更改_session.save_handler_来将数据保存在数据库中。
您可能可以在php.ini(某些提供程序允许)中或在网站根文件夹的.htaccess文件中为apache + mod_php设置_session.save_path_: 查看Chris Shiflett的教程或Zend_Session_SaveHandler_DbTable来设置和替代会话处理程序。 如果使用session_set_save_handler(),则可以设置自己的会话处理程序。例如,您可以将会话存储在数据库中。有关数据库会话处理程序的示例,请参考php.net注释。 如果您有多个服务器,则DB会话也很好,否则,如果您正在使用基于文件的会话,则需要确保每个Web服务器都可以访问同一文件系统以读取/写入会话。 我将同时检查IP和用户代理,以查看它们是否发生了变化
|
最新内容
相关内容
python网络编程及前端常见问题
python网络编程及前端常见问题,数据,服务,分析,培训,状态,前端,区别,服务器,常见问题,上面,当我们学习Python时,需要掌握的的知识有很多,除了有python循环执行语句怎么写
python循环执行语句怎么写,培训,项目,语句,条件,序列,双数,括号,后跟,字符串,语法,python编程中while语句用于循环执行程序,即在某条件下,循环python如何操作mysql数据库
python如何操作mysql数据库,培训,标准,项目,密码,数据库,接口,表字,操作,用户,机子,Python标准数据库接口为PythonDB-API,PythonDB-API为开发python如何执行python文件
python如何执行python文件,代码,培训,文件,程序,命令,模式,事半功倍,后缀,文本,以上,用文本编辑器写Python程序,然后保存为后缀为.py的文件,就python怎么执行.py文件
python怎么执行.py文件,培训,位置,代码,文件,空格,路径,文件名,时候,右侧,单击,要运行一个已经编写好的.py文件,可以单击开始菜单,在“搜索程序pythonfinal作用域的代码一定会被
pythonfinal作用域的代码一定会被执行吗?,代码,培训,异常,流程,作用,函数,上面,以上,需求,发生,python在正常的情况下,finally作用域的代码一pythonos.system执行cmd指令
pythonos.system执行cmd指令,培训,状态,高位,号码,低位,指令,脚本,内容,控制台,实例,pythonos.system执行cmd指令1、执行cmd指令,在cmd输出的python网页中下拉框的操作
python网页中下拉框的操作,信息,培训,选项,元素,操作,标签,对象,下标,属性,表示,python网页中下拉框的操作1、只要是第一次打开页面可以加载python集合的并集操作
python集合的并集操作,培训,操作,参数,更多,语法,符号,实例,元素,以上,两个,python集合的并集操作说明1、可以使用|符号来计算两个或更多集合python如何创建操作页面
python如何创建操作页面,培训,方法,操作,页面,组件,实例,模块,按钮,界面,初始化,python如何创建操作页面说明Python自带tkinter模块,本质上是Gpythonformat的格式化操作
pythonformat的格式化操作,名称,数字,位置,培训,字符串,参数,操作,索引,方法,括号,pythonformat的格式化操作方法说明str.format(*args,**kwapython使用loguru操作日志
python使用loguru操作日志,信息,培训,日志,堆栈,操作,颜色,方法,变量,灵魂,表示,python使用loguru操作日志1、自定义颜色调用add方法增加hand