当前位置: 首页 > 科技观察

PHP安全:保证内容安全

时间:2023-03-12 00:29:54 科技观察

除了避免web系统本身存在漏洞,被攻击者利用外,还需要将内容数据安全地传递给用户,用户安全地接收内容数据。防止内容在传输过程中被篡改,防止用户提交非法内容,保证接收到的内容是系统可接受的。1、不安全的HTTP传输HTTP传输的数据是未加密的,即明文,因此在传输过程中随时可能被拦截。客户端与服务器之间没有身份确认过程,所有数据均以明文传输。所以很容易被攻击,所以使用HTTP传输隐私信息是非常不安全的。图1是普通HTTP的传输,HTTP传输面临以下风险。(1)窃听风险:攻击者可以获得所有通信内容。(2)篡改风险:攻击者可以修改所有通信内容。(3)冒充风险:攻击者冒充他人参与通信。图1HTTP被拦截为了防止上述现象的发生,研发人员对传输的信息进行了对称加密。如图2所示,即使攻击者拦截了传输的信息,也无法破译。图2Symmetricencryption采用对称加密,双方拥有相同的密钥,信息安全传输,但这种方式存在以下缺点。(1)不同的客户端和服务器数量众多,双方需要维护大量密钥,维护成本高。(2)由于每个客户端和服务器的安全级别不同,密钥容易泄露。为了防止对称加密中的密钥泄露,如图3所示,非对称加密客户端使用公钥对请求内容进行加密,服务端使用私钥对内容进行解密,反之亦然。但是这个过程也有缺点。公钥是公开的(即攻击者也会有公钥),所以如果服务器上用私钥加密的信息被恶意攻击者拦截,攻击者可以用公钥解密得到它的内容。图3非对称加密为了平衡性能和安全问题,人们将对称加密和非对称加密结合起来,充分发挥各自的优势。图4显示了混合加密。图4混合加密客户端使用公钥加密对称密钥。服务器收到信息后,用私钥解密。在提取出对称加密算法和对称密钥之后,两者之间后续的信息传输就可以使用对称加密了。方式。然而,仍然存在以下问题。(1)无法判断客户端获取的公钥是真实的还是攻击者伪造的。(2)无法确认服务器是真实的而不是攻击者的。因此,传输过程仍然存在被劫持的可能,如图5所示。图5加密传输被劫持2.HTTPS传输更安全为了保证这些隐私数据能够加密传输,Netscape(网景)设计了安全套接字层(SecureSocketsLayer,SSL)协议对通过HTTPS传输的数据进行加密HTTP。HTTPS就这样诞生了。HTTPS可以对信息进行加密,防止数据在传输过程中被第三方窃取或修改,保证数据的完整性。因此,银行网站或电子邮件等许多安全级别较高的服务都使用HTTPS。随着安全意识的提高,目前主流网站纷纷采用HTTPS。图6显示了HTTPS请求过程。当客户端从服务器收到SSL证书时,它会验证证书的真实性。下面以浏览器为例进行说明。图6HTTPS请求流程(1)浏览器读取证书中的证书拥有者、有效期等信息,并一一验证。(2)浏览器开始搜索操作系统内置的受信任的证书颁发机构CA,并与服务器发送的证书中的颁发者CA进行比较,以验证该证书是否由合法机构颁发。(3)如果找不到,浏览器会报错,说明服务器发送的证书不可信。(4)如果找到,浏览器会从操作系统中取出颁发者CA的公钥,然后解密服务器发送的证书中的签名。(5)浏览器使用相同的哈希算法计算服务器发送的证书的哈希值,并将计算出的哈希值与证书中的签名进行比较。(6)如果比对结果一致,则证明服务器发送的证书是合法的,没有被冒用。(7)此时浏览器可以读取证书中的公钥进行后续加密。通过发送SSL证书,既解决了公钥获取问题,又解决了攻击者冒充问题,因此HTTPS传输比HTTP更安全。(1)所有信息加密传输,攻击者无法窃听。(二)具有验证机制。一旦被篡改,通信双方都会立即发现。(3)配备身份证明,防止身份被冒用。与HTTP相比,HTTPS增加了很多握手、加密、解密等过程。虽然过程很复杂,但是可以保证数据传输的安全。在这个互联网扩张的时代,隐藏着各种无形的危机。为保证数据安全和维护网络稳定,建议使用HTTPS。3、防盗链盗链是指网站所有者不自己存储资源,而是通过技术手段窃取其他网站服务商的内容资源,直接展示在自己的网站上,骗取终端用户的浏览和点击。被盗内容主要为图片、视频等资源下载文件。网站盗链会大量消耗被盗链网站的带宽和系统资源,从而增加服务器的负担,损害企业利益,影响企业形象。为了防止服务器资源被盗,通常可以检测访问源的Referer进行过滤,比如在Nginx中配置Referer检查,检查Referer是否在指定的域名源中,比如www.ptpress.com.cn、ptpress.com.cn,防止jpg|gif|png|swf|flv|wma|wmv|mp3|zip|rar等静态资源被第三方引用。如果测试失败,则直接返回“404找不到资源”。location~*^.+\.(jpg|gif|png|swf|flv|wma|wmv|mp3|zip|rar)${valid_referersnoneblockedwww.ptpress.com.cnptpress.com.cn;if($invalid_referer){return404;break;}access_logoff;}如果使用Apache作为web服务器,可以直接在.htaccess中配置,设置方法如下。RewriteEngineonRewriteCond%{HTTP_REFERER}!^$[NC]RewriteCond%{HTTP_REFERER}!ptpress.com.cn[NC]RewriteCond%{HTTP_REFERER}!www.ptpress.com.cn[NC]RewriteRule.*\.(jpg|gif|png|swf|flv|wma|wmv|mp3|zip|rar)$http://www.ptpress.com.cn/[R,NC,L]如果是一些动态资源,可以用PHP查看Referer白名单方式防止盗链。