Secsheep

愿你从知识中获得勇气和力量。

Home › uncategorized › php安全开发

php安全开发

Secsheep 2023年5月29日    

注:最近在学安全开发-php,故将php相关的知识点记录下来。(来自小迪安全的笔记)

目录

Toggle
  • 1.Cookie、Session和Token
    • 1.身份验证-Cookie使用
    • 2.身份验证-Session使用
    • 3.唯一性判断-Token使用
    • 4.总结
  • 2.php文件上传
    • 3.php代码设计

1.Cookie、Session和Token

以下为三种技术的关键作用:

  • 后台模块-身份验证-Cookie技术
  • 后台模块-身份验证-Seesion技术
  • 后台及其他-数据唯一性-Token技术

1.身份验证-Cookie使用

生成cookie的原理图过程:

1、客户端向服务器发送HTTP请求。

2、服务器检查请求头中是否包含cookie信息。

3、如果请求头中包含cookie信息,则服务器使用该cookie来识别客户端,否则服务器将生成一个新的cookie。

4、服务器在响应头中设置cookie信息并将其发送回客户端。

5、客户端接收响应并将cookie保存在本地。

6、当客户端发送下一次HTTP请求时,它会将cookie信息附加到请求头中。

7、服务器收到请求并检查cookie的有效性。

8、如果cookie有效,则服务器响应请求。否则,服务器可能会要求客户端重新登录。

setcookie(): 设置一个cookie并发送到客户端浏览器。

unset(): 用于删除指定的cookie。

 

 

2.身份验证-Session使用

1、客户端向服务器发送HTTP请求。

2、服务器为客户端生成一个唯一的session ID,并将其存储在服务器端的存储器中(如文件、数据库等)。

3、服务器将生成的session ID作为一个cookie发送给客户端。

4、客户端将session ID保存为一个cookie,通常是在本地浏览器中存储。

5、当客户端在发送下一次HTTP请求时,它会将该cookie信息附加到请求头中,以便服务器可以通过该session ID来识别客户端。

6、服务器使用session ID来检索存储在服务器端存储器中的与该客户端相关的session数据,从而在客户端和服务器之间共享数据。

session_start(): 启动会话,用于开始或恢复一个已经存在的会话。

$_SESSION: 用于存储和访问当前会话中的所有变量。

session_destroy(): 销毁当前会话中的所有数据。

session_unset(): 释放当前会话中的所有变量。

Session存储路径:PHP.INI中session.save_path设置路径

3.唯一性判断-Token使用

1、生成Token并将其存储在Session

2、生成Token并将其绑定在Cookie触发

3、尝试登录表单中带入Token验证逻辑

4、思考Token安全特性

 

1、存储位置不同:

Cookie是存储在客户端(浏览器)上的,而Session是存储在服务器端的。

2、安全性不同:

Cookie存储在客户端上,可能会被黑客利用窃取信息,而Session存储在服务器上,更加安全。

3、存储容量不同:

Cookie的存储容量有限,一般为4KB,而Session的存储容量理论上没有限制,取决于服务器的硬件和配置。

4、生命周期不同:

Cookie可以设置过期时间,即便关闭浏览器或者重新打开电脑,Cookie仍然存在,直到过期或者被删除。而Session一般默认在浏览器关闭后就会过期。

5、访问方式不同:

Cookie可以通过JavaScript访问,而Session只能在服务器端进行访问。

6、使用场景不同:

Cookie一般用于存储小型的数据,如用户的用户名和密码等信息。而Session一般用于存储大型的数据,如购物车、登录状态等信息。

总之,Cookie和Session都有各自的优缺点,选择使用哪一种方式,取决于具体的应用场景和需求。一般来说,如果需要存储敏感信息或者数据较大,建议使用Session;如果只需要存储少量的数据,并且需要在客户端进行访问,可以选择使用Cookie。


4.总结

-在Web应用程序中,使用token和不使用token的主要差异在于身份验证和安全性。

1.身份验证:采用token机制的Web应用程序,用户在登录成功后会收到一个token,这个token可以在每次请求时发送给服务器进行身份验证。而不采用token机制的Web应用程序,一般会使用session机制来保存用户登录状态,服务器会在用户登录成功后创建一个session,之后的每个请求都需要在HTTP头中附带这个session ID,以便服务器能够验证用户身份。

2、安全性:采用token机制的Web应用程序,在服务器上不会存储用户的登录状态,只需要存储token即可。因此,即使token被盗取,黑客也无法获得用户的密码或者其他敏感信息。而不采用token机制的Web应用程序,一般会在服务器上存储用户的登录状态,因此如果服务器被黑客攻击,黑客可能会获得用户的敏感信息。

3、跨域访问:采用token机制的Web应用程序,在跨域访问时,可以使用HTTP头中的Authorization字段来传递token信息,方便实现跨域访问。而不采用token机制的Web应用程序,在跨域访问时,需使用cookie或session来传递用户身份信息,比较麻烦。

总之,采用token机制可以提高Web应用程序的安全性,并且方便实现跨域访问。不过,使用token机制也需要开发者自己来实现身份验证和token的生成和验证,相对来说比较复杂。而不采用token机制,使用session机制则相对简单,但是安全性相对较低。因此,具体采用哪种机制,需要根据实际情况进行权衡和选择。

2.php文件上传

关于php文件上传的三种服务架构:

 

1、上传至服务器本身的存储磁盘(源码在一起)

2、云产品OSS存储对象去存储文件(泄漏安全)(攻击者只能从oss账户的access key和access id的角度进行攻击)

3、把文件上传到其他域名,如:www.xiaodi8.com->upload.xiaodi8.com

3.php代码设计

3.php代码设计

1.容易出现代码漏洞的地方:

①本身的源码 ②模板漏洞 ③框架漏洞

2. php中的框架、模板和组件

1.框架:指的是核心开发、代码的逻辑核心(代码逻辑)

thinkphp yii laravel

2.模板:负责页面美观显示的

如:smarty

3.组件:指的是第三方功能(图片处理、数据转换、数据库操作等)

如:ZendGuardLoader php-imagick

 

再如

java框架:Struts2 springboot ssm

组件:shiro fastjson log4j2

 Previous Post

常见Web漏洞复现

―2023年5月23日

Next Post 

vulhub漏洞复现之redis 4-unacc 未授权访问漏洞

―2023年6月7日

Author: Secsheep

Related Articles

Secsheep ― 2023年5月23日 | No Comment

搭建wordpress博客

具体参考以下博客

Leave a Reply Cancel reply

Copyright © Secsheep 赣ICP备2023005527号