首页 / 知识
关于php:如何强制用户通过HTTPS而非HTTP访问我的页面?
2023-04-16 17:50:00

How can I force users to access my page over HTTPS instead of HTTP?我只有一个页面要强制作为HTTPS页面(Apache上的PHP)进行访问。如何在不使整个目录都需要HTTPS的情况下执行此操作?或者,如果您从HTTP页面向HTTPS页面提交表单,它是否通过HTTPS而不是HTTP发送? 这是我的示例:
我希望只能通过以下方式访问它:
当然,我可以将指向此页面的所有链接都指向HTTPS版本,但这并不能阻止一些傻瓜故意通过HTTP访问它... 我想到的一件事是在PHP文件的标头中放置一个重定向,以检查它们是否正在访问HTTPS版本:
但这不是正确的方法,对吗? 顺便说一句,请不要关注URL。我知道,如果实际上是一个有购物车等的页面,那么您将以另一种方式进行操作。可以将其视为来自某网站的页面,该网站以一种价格出售一件商品,您在其中键入您的信用卡信息,然后提交给外部网站上的付款网关,以明确地对您的卡进行一次收费。 我以前做过的方式基本上就像您写的一样,但是没有任何硬编码的值:
您可以在Apache上使用指令和mod_rewrite来实现:
如果需要,您可以使用正则表达式使位置信息随着时间的推移变得更智能。 您应强制客户端始终使用HTTP Strict Transport Security(HSTS)标头请求HTTPS:
请注意,大多数现代浏览器都支持HSTS,但不是通用浏览器。因此,以上逻辑在用户不支持HTTP的情况下手动重定向用户,无论他们是否支持HTTP,然后设置HSTS标头,以便在可能的情况下由浏览器重定向其他客户端请求。 我刚刚创建了一个.htaccess文件并添加了:
很简单!
在负载平衡器后面运行时,必须执行类似的操作。帽子提示https://stackoverflow.com/a/16076965/766172
PHP方式:
Apache mod_rewrite方式:
http://www.besthostratings.com/articles/force-ssl-htaccess.html 有时您可能需要确保用户正在通过安全连接浏览您的站点。始终将用户重定向到安全连接(https://)的简单方法可以通过包含以下行的.htaccess文件来实现:
请注意,.htaccess文件应位于网站的主文件夹中。 如果您希望对特定文件夹强制使用HTTPS,则可以使用:
.htaccess文件应放置在需要强制使用HTTPS的文件夹中。
好吧..现在有很多东西,但是没有人真正完成 除非您将其用作诱饵。 $ _SERVER传播可以知道某人的意愿进行更改。
就像Sazzad Tushar Khan和thebigjc所说的那样,您也可以使用httaccess来做到这一点,并且这里有很多答案。
到.httaccess中所有内容的结尾,就是这样。 仍然,我们不像使用这两个工具那样安全。 其余的很简单。如果缺少属性,即...
还要说您已经更新了httaccess文件并检查:
您可以检查更多变量,即
因此,我的意思是,当答案组合在一起时,不要仅仅满足于一个或另一个。
使用
使用 请记住,显示表单的页面不需要通过HTTPS进行馈送,而最需要它的是发回URL。 编辑:是的,正如下面所指出的,最好将整个过程放在HTTPS中。更加令人放心-我指出,帖子是最关键的部分。另外,您需要注意将所有cookie设置为安全的,因此它们只会通过SSL发送。 mod_rewrite解决方案也很漂亮,我用它来保护自己网站上的许多应用程序。
如果您使用Apache或支持.htaccess文件的LiteSpeed之类的工具,则可以执行以下操作。
对于所有重写规则,您仅需要在.htaccess中使用一次" RewriteEngine On"指令,因此,如果已经有了它,则只需复制第二行和第三行即可。 我希望这有帮助。 仅使用此功能还不够:
如果您有任何http内容(例如外部http图像源),则浏览器将检测到可能的威胁。因此,请确保您代码中的所有ref和src均为https 对于使用IIS的用户,在web.config中添加此行将有所帮助:
完整的示例文件
不要在同一页面上混合使用HTTP和HTTPS。如果您有一个通过HTTP提供的表单页面,那么我将对提交数据感到不安-如果不执行查看源并进行搜寻,就无法查看提交是通过HTTPS还是HTTP进行的。 通过HTTPS连同提交链接一起提供表单并没有太大的优势。 我已经通过许多解决方案来检查$ _SERVER [HTTPS]的状态,但似乎不可靠,因为有时它没有设置或设置为on,off等,导致脚本进行内部循环重定向。 如果您的服务器支持$ _SERVER [SCRIPT_URI],这是最可靠的解决方案
请注意,根据您的安装,您的服务器可能不支持$ _SERVER [SCRIPT_URI],但如果支持,则是更好的脚本。 您可以在此处检查:为什么某些PHP安装中有$ _SERVER ['SCRIPT_URI']而有些却没有 您不应该出于安全原因。特别是在这里使用cookie时。它使您对基于cookie的重播攻击敞开了大门。 无论哪种方式,都应该使用Apache控制规则进行调整。 然后,您可以测试是否启用了HTTPS,并在需要时根据需要重定向。
您应该仅使用FORM POST(无获取)重定向到付款页面, http://joseph.randomnetworks.com/archives/2004/07/22/redirect-to-ssl-using-apaches-htaccess/ 是一个很好的起点,很抱歉没有提供更多。但是您确实应该通过SSL推送所有内容。 它具有过度保护的功能,但至少您的担心更少。 也许这可以帮到您,这就是我为我的网站所做的工作,它就像一个魅力:
我已经使用了此脚本,并且该脚本在整个网站上都能正常工作。
这么简单 |
最新内容
相关内容
linux命令删除用户组?
linux命令删除用户组?,管理,密码,系统,用户组,用户,概念,命令,文件,管理员,工作组,Linux命令之用户组管理1、查看/etc/group文件,只存在名称为mlinux操作数据库命令?
linux操作数据库命令?,地址,服务,系统,密码,数据库,工具,名字,首页,命令,参数,如何实现MySQL数据库的基本用法在linux下1、mysql all-databaselinux系命令的操作?
linux系命令的操作?,工作,系统,信息,网络,命令,基础,简介,管理,目录,操作,linux的cd命令的使用方法cd ~:回到用户家目录。注:这得看你是用什么用linux执行多次命令?
linux执行多次命令?,系统,信息,标准,工作,情况,命令,周期性,服务,代码,时间,linux系统能把很多命令一起执行,然后结果输出一个文件吗?就是scrilinux中用户创建命令?
linux中用户创建命令?,密码,系统,用户,软件,命令,联系方式,管理,信息,用户名,新用户,linux怎么添加用户1、打开xshell软件,远程访问您的服务器linux并行化执行命令?
linux并行化执行命令?,系统,工具,信息,命令,名称,网络,管理,首页,服务,暂停,Linux多台主机批量执行命令1、执行命令(记得先对doCommand.s h增加linux注销命令用户?
linux注销命令用户?,系统,服务,密码,地址,工作,命令,状态,工具,信息,基础,linux注销用户命令1、shutdown是一个用来安全关闭或重启Linux系统的linux打断执行的命令?
linux打断执行的命令?,系统,状态,网站,标准,通用,客服,人员,名字,网络,暂停,Linux停止命令继续执行的方法是什么它只是在进程中维持挂起的状态linux系统用户命令?
linux系统用户命令?,系统,工作,地址,信息,管理,命令,目录,时间,电脑,名称,请问linux操作系统的命令是什么linux命令是对Linux系统进行管理的命linux操作常用命令?
linux操作常用命令?,工作,系统,地址,信息,命令,目录,管理,标准,基础,工具,linux常用命令及用法linux系统常用操作命令如下:ls:全拼list,功能是列linux命令没执行完?
linux命令没执行完?,系统,设备,工具,情况,密码,状态,电脑,管理,材料,服务,Linux:写的脚本执行过程中为什么会有cp未复制完,或者tar未解压完的linux操作命令重命名?
linux操作命令重命名?,图片,软件,名称,名字,文件,命令,状态,代码,工具,系统,Linux下批量修改文件名1、Linux下修改文件名有mv和rename。 其中m