我正在使用Semrush,我有這樣一個通知,它真的困擾著我,想要擺脫。1個子域不支持HSTS的子域。www.domain.com ,這里是我的.htdocs檔案:
Options -Indexes
<IfModule mod_rewrite.c>
選項 FollowSymLinks
重寫引擎開啟
RewriteCond %{REQUEST_FILENAME}! !-f
RewriteCond %{REQUEST_FILENAME}! !-d
RewriteRule ^(.*)$ index.php/$1 [L]
RewriteCond %{HTTPS}! !=on
RewriteCond %{HTTP_USER_AGENT}! ^(. )$
RewriteCond %{SERVER_NAME}! ^example.com$
RewriteRule .* https://www.%{SERVER_NAME}%{REQUEST_URI} [R=301,L]/span>
頭部添加Strict-Transport-Security "max-age=300"。
</IfModule>
<IfModule mod_headers.c>
<If "%{REQUEST_SCHEME} == 'https' || %{HTTP:X-Forwarded-Proto} == 'https'"/span>>
頭部總是設定Strict-Transport-Security "max-age=31536000"。
</If>
</IfModule>
我在最后添加這部分內容:
<IfModule mod_headers.c>
<If "%{REQUEST_SCHEME} == 'https' || %{HTTP:X-Forwarded-Proto} == 'https'"/span>>。
頭部總是設定Strict-Transport-Security "max-age=31536000"。
</If>
</IfModule>
但是仍然沒有結果,我做錯了什么呢?
uj5u.com熱心網友回復:
你有沒有試著通過DNS記錄和.vconfig檔案來解決這個問題?對于我的網站,我有:
A domain.com 123.123.123)A www 123.123.123)然后在domain.com.vhost中:
<VirtualHost *:80>
DocumentRoot /var/www/path_to_root
服務器名稱 domain.com
服務器別名domain.com
重寫引擎開啟
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]/span>
</VirtualHost>
該重寫規則強制執行HTTPS。
如果你想在.vhost或.htaccess中對特定的域強制使用HTTPS,你可以使用:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain1.com [NC] 。
重寫后的%{HTTPS}關閉
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]/span>
而對于具體的檔案夾:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(folder1|folder2|folder3) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]/span>
確保將檔案夾參考改為實際的目錄名稱。
uj5u.com熱心網友回復:
如果你能夠通過Cloudflare路由你的DNS(甚至在他們的免費計劃中),你將能夠在點擊一個按鈕后啟用HSTS(包括子域)。在速度和安全方面也有很多其他好處,這也可能有助于你的SEMRush報告
。uj5u.com熱心網友回復:
Options -Indexes
<IfModule mod_rewrite.c>
選項 FollowSymLinks
重寫引擎開啟
RewriteCond %{REQUEST_FILENAME}! !-f
RewriteCond %{REQUEST_FILENAME}! !-d
RewriteRule ^(.*)$ index.php/$1 [L]
RewriteCond %{HTTPS}! !=on
RewriteCond %{HTTP_USER_AGENT}! ^(. )$
RewriteCond %{SERVER_NAME}! ^example.com$
RewriteRule .* https://www.%{SERVER_NAME}%{REQUEST_URI} [R=301,L]/span>
頭部添加Strict-Transport-Security "max-age=300"。
</IfModule>
<IfModule mod_headers.c>
<If "%{REQUEST_SCHEME} == 'https' || %{HTTP:X-Forwarded-Proto} == 'https'"/span>>
頭部總是設定Strict-Transport-Security "max-age=31536000"。
</If>
</IfModule>
這里有一些問題會妨礙HSTS的正常作業,還有一些應該進行的額外優化。
您沒有將http://www.example.com(即www子域)重定向到HTTPS。你需要將HTTP WWW重定向到HTTPS WWW,以便符合HSTS。
你正在重定向http://example.com/(即HTTP 非www)到HTTPS WWW。為了符合HSTS,你需要先重定向到同一主機上的HTTPS。即http://example.com/到https://example.com/到https://www.example.com(是的,這是兩次重定向,但這也是罕見的,每個用戶代理最多只能出現一次,因為要回傳STS頭)。
你的指令的順序是錯誤的。你的規范重定向(即HTTP到HTTPS和非www到www)需要在你的前控制器重寫(第一條規則)之前。把它們放在前臺控制器之后,除了主頁、目錄和靜態資源之外,它們永遠不會被處理。例如,http://example.com/<site-url>將永遠不會被規則所重定向。不確定你是如何用SEMrush測驗HSTS的合規性的,但是如果按照所寫的指令,那么http://example.com/<site-url>將會失敗,因為它沒有被重定向。
你應該洗掉第一個Header指令 - 這與第二個(正確的)Header指令有直接沖突。always條件(如在第二個例子中使用)是必要的,以便在
HTTPS 301重定向(即非2xx回應)從非www到www.
你應該在Strict-Transport-Security頭中包含includeSubDomains指令,以便在請求域頂點時覆寫www子域。雖然,所有子域現在將被隱含地包括在內。如果沒有這個,www子域將需要明確地被請求。(好吧,反正你在下一個請求中會重定向到www。)
你不需要<IfModule>包裝器。這些指令是強制性的,它們不是optional(這些包裝器的存在暗示了這一點)。 如果mod_rewrite不可用,你的網站可能會失敗,你將不符合HSTS標準。
我從前面的HTTP 非www重定向中假設你不在管理SSL的前端代理(或負載平衡器)后面,在這種情況下,后面的<If>表達中對%{HTTP:X-Forwarded-Proto}的檢查應該被洗掉。如果你不在 "代理 "后面,那么就有可能偽造一個請求,以防止STS頭被送回來(用戶不應該能夠這樣做)。
相反,如果你在一個 "代理 "后面,那么對%{REQUEST_SCHEME} == 'https'的檢查是多余的 - 但不會造成任何傷害。順便說一下,使用REQUEST_SCHEME假設你是在Apache 2.4以上(我希望你是),然而,如果你仍然在Apache 2.2上,那么這個檢查將失敗,STS頭將不會被設定。
因此,考慮到以上幾點,你的.htaccess檔案應該這樣寫:
Options FollowSymLinks -Indexes
重寫引擎開啟
# Redirect HTTP to HTTPS on the same host (requirement of HSTS)
RewriteCond %{HTTPS}! !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]/span>
# 重定向非www到www(僅HTTPS)
RewriteCond %{HTTP_HOST}. ^example.com$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]/span>
# Frontcontroller
RewriteRule ^index.php/ - [L]
RewriteCond %{REQUEST_FILENAME}! !-f
RewriteCond %{REQUEST_FILENAME}! !-d
RewriteRule (.*) index.php/$1 [L]
<If "%{REQUEST_SCHEME} == 'https'>
# "always"條件是需要在HTTPS重定向時設定頭的。
頭部總是設定Strict-Transport-Security "max-age=31536000; includeSubDomains"
</If>
附加說明:
我使用了HTTP_HOST而不是SERVER_NAME,因為你需要請求中的主機名。默認情況下,SERVER_NAME與HTTP_HOST相同,但這可以根據服務器配置而變化。
沒有理由只在請求中出現非空的User-Agent字串時才應用規范重定向(惡意請求可能會抑制User-Agent字串),就像你原來所做的那樣,所以我已經洗掉了這個條件。如果有的話,你會阻止這樣的請求。
在 RewriteRule pattern 中的重碼 ^ 比 .* 更加理想,因為它只需要成功 - 它不需要實際 match 任何東西,因為它以后不會被使用。
在 "front-controller "之前的額外的RewriteRule ^index.php/ - [L]指令只是一個優化,以防止重寫的URL不必要地通過后面的檔案系統檢查。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/328149.html
標籤:
IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......
uj5u.com 2020-09-10 03:51:52 moreCL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......
uj5u.com 2020-09-10 03:52:11 more網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......
uj5u.com 2020-09-10 03:52:15 more京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......
uj5u.com 2020-09-10 03:52:25 more利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......
uj5u.com 2020-09-10 03:52:35 more詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......
uj5u.com 2020-09-10 03:52:45 more不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......
uj5u.com 2020-09-10 03:52:57 more0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......
uj5u.com 2020-09-10 03:55:40 moregit泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......
uj5u.com 2020-09-10 03:56:07 more在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......
uj5u.com 2023-04-20 08:17:54 more這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......
uj5u.com 2023-04-20 08:17:47 more實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......
uj5u.com 2023-04-20 08:12:31 moreJavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......
uj5u.com 2023-04-20 08:02:25 more一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......
uj5u.com 2023-04-20 08:02:21 more好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......
uj5u.com 2023-04-20 08:01:50 more我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......
uj5u.com 2023-04-20 08:01:37 more本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......
uj5u.com 2023-04-20 08:01:31 more一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......
uj5u.com 2023-04-20 08:01:10 more一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......
uj5u.com 2023-04-20 08:00:32 more