Web Security:護國神山要求的網站安全設定 HSTS、XSS、Content-Security-Policy ...

2022061319:15
據說某護國神山會要求協力廠商達到一定程度資安標準
甚至針對協力廠商,給出資安掃描報告
(全球首個半導體資安標準SEMI E187出爐,台積電與工研院號召臺灣多家半導體與資安業者制定與推動,臺灣制定國際標準新突破)

針對網站,神山公司所要求常見資安問題 (常常容易被忽略的):

HSTS,HTTP Strict Transport Security

就是訪客輸入 http 網址時,瀏覽器會自動轉到 https
注意:
第一次瀏覽本網站時,瀏覽器收到 Strict-Transport-Security 這個 header 會記錄下來
往後再瀏覽本網站時,是瀏覽器自己將 http 轉成 https,而不是 server 端幫你轉為 https


php 的寫法
header("Strict-Transport-Security: max-age=31536000; includeSubDomains; preload");

.htaccess 中的設定方式
<IfModule mod_headers.c>
  Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
</IfModule>

或是:

<IfModule mod_headers.c>
 Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS 
</IfModule> 

 includeSubDomains :包含子網域
 max-age=0 表示停用 HSTS

若是要在 httpd.conf 的設定:
<VirtualHost *:443> 
  DocumentRoot /var/www/html
  ServerName www.abc.xyz
  :: ::
  Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains;" 
</VirtualHost>

   其他參考
   移除瀏覽器的 HSTS 設定資料


Set-Cookie

必需有  secure_flag / http_only

以 php 來說,設定 cookie 的方式:
setcookie(
    string $name,
    string $value = "",
    int $expires_or_options = 0,
    string $path = "",
    string $domain = "",
    bool $secure = false,
    bool $httponly = false
);
一般設定cookie 大概會這樣寫:
setcookie("cookiename", "cookievalue123", 0, "/");

加上 secure_flag  / http_only
setcookie("cookiename", "cookievalue123", 0, "/", "", true, true);
最後兩個 true 就是設定 secure_flag / http_only



XSS response headers

x-content-type-options
x-frame-options  禁止別的網站 以iframe嵌入我網站
x-xss-protection

php 中的設定方式

header("X-Content-Type-Options: nosniff");
header("X-Frame-Options: DENY");    #或 SAMEORIGIN
header("X-XSS-Protection: 1; mode=block");


.htaccess 中的設定方式

<IfModule mod_headers.c>
  Header set X-Content-Type-Options "nosniff"
  Header set X-Frame-Options "DENY"   #或 SAMEORIGIN
  Header set X-XSS-Protection "1; mode=block"
</IfModule>


X-Frame-Options 說明:
DENY
  表示網頁中禁止"被"嵌入到 frame 中,即使於相同網域內嵌入也不允許。

SAMEORIGIN
  唯有當符合同源政策下,才能被嵌入到 frame 中。

https://developer.mozilla.org/zh-TW/docs/Web/HTTP/Headers/X-Frame-Options



Content-Security-Policy

大致上是設定
- 是否允許在 html 中夾雜 javascript 或 css
- 設定 js/css/image 的來源白名單
- 禁止 eval
- 防 sniffer
 
參考
<IfModule mod_headers.c>
Header set Content-Security-Policy "object-src 'none'"
</IfModule>

TLS certificate extended validation

就是建議購買 ev SSL(TLS) 憑證
ev SSL 效果像這樣,網址旁會顯示"綠色的公司名稱"


***目前一些新版的瀏覽器,都已經不在網址列顯示公司名稱
類似這樣 Firefox:


不過呢,這兩年網路上幾乎沒有一家廠商使用 ev SSL 憑證
apple 有、amazon 沒有、google 沒有、販賣 SSL 憑證的公司也沒有
連神山公司自己也沒買 ev SSL 憑證

相關:
擴充驗證憑證 - 維基百科,自由的百科全書 (wikipedia.org)
 



  •   電腦工坊-小郭 於 2022-06-16 06:51 1F
  • 因為省錢因為~~太多因為了^^

    路過~~