安全

php设置samesite cookie,有效防止CSRF

php设置samesite cookie,支持所有PHP版本。

PHP 7.3 的setcookie函数已经支持samesite属性,但对于7.3以下版本,可以用以下函数代替:

<?php
$options = [
    'expires' => time()+18400,
    'domain' => 'localhost',
    'httponly' => false,
    'samesite' => 'Lax',
    'secure' => false,
    'path' => '/'
  ];

function samesite_setcookie($name, $value, array $options)
{
    $header = 'Set-Cookie:';
    $header .= rawurlencode($name) 
                

HTTP API 认证授权方法

我们知道,HTTP是无状态的,所以,当我们需要获得用户是否在登录的状态时,我们需要检查用户的登录状态,一般来说,用户的登录成功后,服务器会发一个登录凭证(又被叫作Token),就像你去访问某个公司,在前台被认证过合法后,这个公司的前台会给你的一个访客卡一样,之后,你在这个公司内去到哪都用这个访客卡来开门,而不再校验你是哪一个人。在计算机的世界里,这个登录凭证的相关数据会放在两种地方,一个地方在用户端,以Cookie的方式(一般不会放在浏览器的Local Storage,因为这很容易出现登录凭证被XSS攻击),另一个地方是放在服务器端,又叫Session的方式(SessonID存于Cookie)。

但是,这个世界还是比较复杂的,除了用户访问,还有用户委托的第三方的应用,还有企业和企业间的调用,这里,我想把业内常用的一些 API认证技术相对系统地总结归纳一下,这样可以让大家更为全面的了解这些技术。注意,这是一篇长文!

本篇文章会覆盖如下技术:

  • HTTP Basic
  • Digest Access
  • App Secret Key + HMAC
  • JWTJSON Web Tokens
  • OAuth 1.0 – 3 legged & 2 legged
  • OAuth 2.0 – Authentication Code & Client Credential
                        

Laravel中的不安全SQL函数

我最近了解到并非Laravel中的所有查询构建器功能都是“安全的”。这意味着不应将用户输入直接传递给它,因为它可能会将您的应用程序暴露给SQL注入漏洞。

过去几天很明显,社区对这些不安全的功能知之甚少。许多开发人员和我一样认为,Laravel查询构建器完全阻止了SQL注入攻击。

这篇博文旨在提高人们对什么是安全的,哪些不安全的意识。…

                

解决PHP的一个长期存在的通过Opcache泄漏敏感数据的问题。

PHP中有一个非常古老的安全漏洞,它涉及在单个主进程共享多个PHP-FPM池的环境中处理OPCache的方式。这是现在运行PHP的最常见方式,也可能会对您产生影响。

漏洞

PHP有一种加速其解释器动态特性的方法,称为字节码缓存。PHP在每个页面加载中进行解释,这意味着PHP被转换为服务器理解并可以执行的字节码。由于大多数PHP页面不会每秒都更改,因此PHP会将该字节码缓存在内存中,并将其作为响应提供,而不必 每次都编译(“ 解释 ”)PHP脚本。…

        

为PHP-FPM和nginx设置多个进程池而安全地运行多个网站

为PHP-FPM和nginx设置多个进程池而安全地运行多个网站

在本文中,我们将向您展示在不同Linux用户的LEMP上运行站点的安全性和隔离性优势。这将通过为每个nginx服务器块(站点或虚拟主机)创建不同的php-fpm进程池来完成。

设置安全LEMP的原因

在常见的LEMP设置下,只有一个php-fpm进程池为同一用户下的所有站点运行所有PHP脚本。这带来两个主要问题:

  • 如果一个nginx服务器块上的Web应用程序(即子域或单独的站点)受到攻击,此服务器上的所有站点也将受到影响。攻击者能够读取其他站点的配置文件,包括数据库详细信息,甚至可以更改其文件。
  • 如果您想让用户访问服务器上的站点,您几乎可以访问所有站点。例如,您的开发人员需要处理开发环境。但是,即使拥有非常严格的文件权限,您仍然可以在相同的服务器上访问所有站点,包括您的主站点。