- Jul 07 Thu 2022 14:31
test
- May 15 Sun 2022 15:50
【程式】在 PHPMailer 中使用 Oauth2 認證來透過 GMAIL 發信
在差不多四月底時收到來自Google通知的這一封信:「您可能無法再存取某些第三方應用程式」。
相關文章已轉發表至 Medium :
- Jun 14 Mon 2021 11:44
【FreeBSD】HTTP Header 安全性設定
近期主管機關會拿 SecurityHeaders 網站來檢測網站,因此調整了一下 Apache 和 PHP 的設定
以下為 Apache 的設定,原則上以下設定有做完應該就可以拿到 A+ 的等級了
<IfModule headers_module>
#
# Avoid passing HTTP_PROXY environment to CGI's on this or any proxied
# backend servers which have lingering "httpoxy" defects.
# 'Proxy' request header is undefined by the IETF, not listed by IANA
#
RequestHeader unset Proxy early
#HTTP Strict Transport Security (HSTS)
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
#Content-Security-Policy (CSP)
Header set Content-Security-Policy "frame-ancestors 'self';"
#X-XSS-Protection
Header set X-XSS-Protection "1; mode=block"
#X-Content-Type-Options
Header set X-Content-Type-Options nosniff
#Permissions-Policy
Header always set Permissions-Policy "geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()"
#X-Frame-Options
Header always append X-Frame-Options SAMEORIGIN
#Referrer-Policy
#Header set Referrer-Policy "no-referrer-when-downgrade"
Header set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
另外 PHP 也可以優化一下,要設定 php.ini
; Whether to use cookies.
; http://php.net/session.use-cookies
session.use_cookies = 1
; http://php.net/session.cookie-secure
session.cookie_secure = 1
; This option forces PHP to fetch and use a cookie for storing and maintaining
; the session id. We encourage this operation as it's very helpful in combating
; session hijacking when not specifying and managing your own session id. It is
; not the be-all and end-all of session hijacking defense, but it's a good start.
; http://php.net/session.use-only-cookies
session.use_only_cookies = 1
; Whether or not to add the httpOnly flag to the cookie, which makes it
; inaccessible to browser scripting languages such as JavaScript.
; http://php.net/session.cookie-httponly
session.cookie_httponly = True
; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF)
; Current valid values are "Strict", "Lax" or "None". When using "None",
; make sure to include the quotes, as `none` is interpreted like `false` in ini files.
; https://tools.ietf.org/html/draft-west-first-party-cookies-07
session.cookie_samesite = Lax
參考資料
- Mar 14 Sun 2021 16:46
【資訊安全】推薦密碼管理器,從 LastPass 移轉至 Bitwarden
近幾年開始學著把自己的密碼交給了密碼管理器 LastPass,主要是層不出窮的資安事件說明駭客竊取了不少資料,包含了各種網站的帳號密碼。
要知道自己的帳號密碼有沒有外洩可以試著到 ';--have i been pwned? 輸入自己常用的 Email 去查詢看看。
而近期 LastPass 修改了免費版政策,自 2021/3/16 起只能從行動裝置或電腦擇一使用,可說是直接閹割掉免費版的便利性。
因此只有三種選擇 :
1. 繼續使用閹割免費版
2. 付費使用 LastPass 完整版
3. 搬家找其他的工具
經過研究後,我選擇了第 3 個搬家的方案,並且選擇了 Bitwarden,要從 LastPass 搬家還蠻快的,可參考這個連結說明 ( Import Data from LastPass )
另外比較了二邊的價格,LastPass 在目前有 75 折的情況下,每年美金 USD 27 ( 折合台幣 NTD 761 ),而 Bitwarden 每年是美金 USD 10 ( 折合台幣 NTD 282 )
相較之下就算要付費 Bitwarden 也是不錯的選擇,先用一個月看看,若沒什麼問題之後就可以回去刪了 LastPass 的資料了 !
- Apr 25 Sat 2020 11:19
【FreeBSD】如何讓網站符合 SSLLabs A+ 標準
最近將網站重新升級至 FreeBSD 12.1 的版本,其中 Web Server 的部份仍延用 Apache 使用
另外因為目前 HTTPS 已經是基本標準了,但啟用 HTTPS 不代表一定是安全,還是有一些地方要注意的
因分享一下我是如何調整 Apache 來符合 SSLLabs A+ 標準
1. 首先要調整 Cipher,這是我的設定
SSLCipherSUite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !CAMELLIA !SEED !3DES !RC4 !aNULL !eNULL !LOW !MD5 !EXP !PSK !SRP !DSS"
2. 調整 SSL Protocol,只支援 TLS 1.2 以上
SSLProtocol +TLSv1.2 +TLSv1.3
3. 讓網站支援 HSTS,我是加在 httpd-ssl.conf 每個 VirtualHost 底下第一行
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
4. 讓網站 DNS 支援 Certification Authority Authorization (CAA)
可以參考這篇文章說明,設定 DNS CAA 紀錄,保護自己的 SSL/TLS 憑證
另外我用的 Apache 版本是 2.4.43,OpenSSL 的版本是 1.1.1.d
- Sep 29 Sun 2019 22:38
【資料庫】如何找到 MySQL 5.7 安裝好之後的預設密碼
今晚將 MySQL 5.7 裝了起來,但無法像以前一樣用 root 身份登入進去修改密碼
發現原來是要先取得一組臨時密碼後才能登入使用,簡單說明一下
1. 先按照以前的指令登入
# mysql -u root -p (按Enter)
Enter password: (直接按Enter)
這時會得到 Access denied 的錯誤訊息,不過這是正常的
2. 切換到家目錄找臨時密碼
# cd ~
# cat .mysql_secret
這時應該就可以發現有一組看起來蠻複雜的臨時密碼,請把它複製下來
3. 重新登入 MySQL 並重設密碼
# mysql -u root -p (按Enter)
Enter password: (貼上剛才的新密碼)
這時應該就登入成功了,最後我們再來重設一下資料庫密碼就完工了
root@localhost > ALERT USER 'root'@'localhost' IDENTIFIED BY '新密碼';
以上就是 MySQL 5.7 安裝好之後重新修改密碼的方法囉 !
- Jul 07 Sun 2019 12:45
【資訊安全】如何讓 Burp Suite 透過 Tor 連線他人主機
Burp Suite 在滲透測試上是很常被利用到的工具,但如果想要「測試」他人主機時,又不想曝露自己的身份(也就是 IP 位置)的話,那該怎麼做咧 ?
這時就得靠 Tor 來幫忙了,Tor 是個全球性的計劃,意旨在希望能保護用戶的行為能不被追蹤
因此這篇教學就很快介紹我是如何用我的電腦在使用 Burp Suite 時,能透過 Tor 來達到隱藏身份的方法
首先這是我的架構示意圖
- Apr 15 Mon 2019 22:00
【程式】整合 reCAPTCHA v3 到 PHP 程式
今天都在研究 Google reCAPTCHA 這機制,相信大家都已經知道這是個反制機器人登入的好東西
依 iThome 於去年 10/30 說明的這篇文章,目前的 reCAPTCHA 已經出到了 v3,而 v3 和 v2 最大的差別就在於它不再要求使用者與網站之間的互動
而是依使用者的行為計算分數後,再讓網站管理者判斷是否要再進一步進行驗證
分享一下我的作法 ~ 首先要先到 reCAPTCHA Admin Console 建立 v3 的驗證資料,記得要勾選 v3 喔 !
建完之後會得二組金錀,一組是網站本身用的,另一組是用來和 Google 主機連線驗證使用,接下來分享我實作的程式碼
首先這是登入頁面的 index.php 程式
<html>
<head>
<title>Google recapcha v3</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://www.google.com/recaptcha/api.js?render=這邊填入網站本身的金錀">
</script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('這邊填入網站本身的金錀', {action: 'homepage'}).then(function(token) {
var recaptchaResponse = document.getElementById('recaptchaResponse');
recaptchaResponse.value = token;
});
});
</script>
</head>
<body>
<h1>Google reCAPTHA Test</h1>
<form id="testform" action="form.php" method="post" >
<input type="email" name="email" placeholder="輸入email" size="40"><br><br>
<input type="submit" name="submit" value="送出"><br><br>
<input type="hidden" value="" name="recaptcha_response" id="recaptchaResponse">
</form>
</body>
</html>
接下來這是第二頁 form.php 程式
<?php
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_secret = '這邊填入和Google連線使用的金錀';
$recaptcha_response = $_POST['recaptcha_response'];
//Make and decode POST request:
$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
$recaptcha = json_decode($recaptcha);
//如果驗證成功,就進一步計算使用者分數,官方回饋分數為 0-1,分數愈接近 1 就是正常,低於 0.5 以下就有可能是機器人了
if($recaptcha->success==true){
if($recaptcha->score >= 0.5) {
echo 'Pass !';
} else {
echo 'Spammer';
}
} else {
echo 'Connection failed';
}
?>
大概就是這樣,至於連線 Google 驗證回傳的值請再參考官網相關說明
參考資料
2. https://gist.github.com/webeasystep/85a20c9278dc5c3763ef82848c7d0558
- Apr 14 Sun 2019 22:49
【FreeBSD】隱藏 Web 伺服器主機資訊 ( Apache 及 PHP 版本)
目前透過一些網站 (如 What's MyIP) 或瀏覽器外掛 (如 Wappalyzer) 都可以很簡易識別公開在網路上 Web 伺服器的主機資訊
若不希望被人知道目前主機是用什麼版本,只要透過修改 Apache 及 PHP 的二個設定檔就可以隱藏起來了
Apache 的部份只要在 httpd.conf 裡面加入以下二行
ServerSignature Off
ServerTokens Prod
PHP 的部份只要在 php.ini 設定一行
expose_php = Off
這樣子就可以囉 !
- Dec 09 Sun 2018 20:28
【程式】Wordpress 更新網址/網域名稱的流程
假設您的 Wordpress 原來網址是 www.abc.com.tw 因為某種原因要換成 www.def.com.tw,要怎麼做呢 ?
步驟其實不會太麻煩,不過請先記得先備份您的資料庫 ! 先備份您的資料庫 ! 先備份您的資料庫 !
說了很重要的事情三次後,接下來進入正題
第一步驟
登入您的 Wordpress 後台,點選「設定」->「一般」,請將原本舊的 WordPress 位址(URL) 及 網站位址(URL) 直接換成新網址後,拉到最下按「儲存變更」即可
這邊的網址後面不需要加最後面的 / 喔,請注意 ~ 這時就會發現連不到網站後台了,不用擔心
第二步驟
請連進資料庫後台,針對 Wordpress 的 Database 要下幾個關鍵的 SQL 語法,總共有 4 個要做
UPDATE wp_options SET option_value = replace(option_value, 'https://舊網址', 'https://新網址') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'https://舊網址','https://新網址');
UPDATE wp_posts SET post_content = replace(post_content, 'https://舊網址', 'https://新網址');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://舊網址','https://新網址');
第一個 SQL 有可能會是 0 筆是正常的喔,另外 SQL 語法裡的 http 或 https 請視您自己網站原本的協定為主,像我的網址都有啟用 https,若您的沒有就請用 http 即可
就這樣,結束 ! 至於您的 Web Server 有另外要調整 Apache or IIS 設定請再自行調整即可 ~