今天都在研究 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 驗證回傳的值請再參考官網相關說明

reCAPTCHA v3

Verifying the user's response

參考資料

1. recaptcha v3 with php

2. https://gist.github.com/webeasystep/85a20c9278dc5c3763ef82848c7d0558

bojack 發表在 痞客邦 留言(0) 人氣()

目前透過一些網站 (如 What's MyIP) 或瀏覽器外掛 (如 Wappalyzer) 都可以很簡易識別公開在網路上 Web 伺服器的主機資訊

若不希望被人知道目前主機是用什麼版本,只要透過修改 Apache 及 PHP 的二個設定檔就可以隱藏起來了

Apache 的部份只要在 httpd.conf 裡面加入以下二行

ServerSignature Off

ServerTokens Prod

PHP 的部份只要在 php.ini 設定一行

expose_php = Off

這樣子就可以囉 !

bojack 發表在 痞客邦 留言(0) 人氣()

假設您的 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 設定請再自行調整即可 ~

 

bojack 發表在 痞客邦 留言(0) 人氣()

之前用 MAC 主機內的終端機要去連其他台 SSH Server 主機時,常會因為連線時間閒置過久而被踢出中斷

Google 了一下發現這篇文章,其實是可以透過三種方式設定的

1. 在連線時直接加入參數,ssh -o ServerAliveInterval=10 keepsdroppingme.com

2. 在個人資料夾底下的 .ssh 目錄加入一個檔案 config,檔案內加入一行設定 ServerAliveInterval=10 即可,指令參考如下

# vi ~/.ssh/config

3. 修改全系統 ssh 設定,此方法需要 root 權限才能修改,一樣加入一行 ServerAliveInterval=10 即可,指令參考如下

# vi /etc/ssh_config

文章標籤

bojack 發表在 痞客邦 留言(0) 人氣()

簡述幾個安裝步驟

首先安裝 Certbot Ports 套件,這也是 Let's Encrypt 建議的工具
# cd /usr/ports/security/py-certbot/
# make install clean

這過程會有一點久,因為它要連同一起裝 python

安裝好之後就可以來申請憑證了,首先先確認您的網站根目錄在哪兒,以我的來說是在 /usr/local/www/apache24/data 底下,這路徑等等會用到

申請憑證指令如下 (請自行更換紅字網址名稱)

# certbot certonly --webroot --webroot-path /usr/local/www/apache24/data/ -d www.bojack.com

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): bojack@bojack.com <--- 請輸入您的 Email

bojack 發表在 痞客邦 留言(0) 人氣()

以前更新 FreeBSD 的 Ports 都是用 cvsup,但在新版本都不適用了,取而代之的是用 portsnap

簡單記錄一下步驟

1. 先更新 /etc/portsnap.conf 裡的 SERVERNAME=portsnap.tw.FreeBSD.org,改成指向台灣的站

2. 第一次使用 Portsnap 請先下指令 #portsnap fetch extract

3. 日後要更新 Ports 就下指令 #portsnap fetch update

bojack 發表在 痞客邦 留言(0) 人氣()

以前連線到有 https 的網站時,在 Chrome 瀏覽器的網址列都可以直接查看網址資訊,但自從某一次 Chrome 改版後就再也無法直接看到了

解決的方式如下,點選 Chrome 右上角的設定 ( 3 個 . 的那符合 ) -> 更多工具 -> 開發人員工具 -> 在上面找到 Security 就可以看到網站用的憑證囉 !

但還是想不透為什麼 Chrome 要把它搞得那麼複雜就是 ~ 

bojack 發表在 痞客邦 留言(0) 人氣()

一般來講在用 Chrome 直接點選 PDF 時會直接開啟,而我個人習慣先下載再開啟,為什麼呢 ?

假設你很想要一個 PDF 檔,先用 Chrome 開啟了一次,無形中就是在下載 PDF 了

當開啟完畢後確定是想要的才會按右上角的下載到本機,這樣又要下載第二次,那不如第一次就直接下載不是嗎 XD

修改 Chrome 設定的方法很簡單,在網址列輸入 chrome://plugins/

將選項 Chrome PDF Viewer 點選停用就可以囉 !

bojack 發表在 痞客邦 留言(0) 人氣()

以下防止 SQL Injection 的程式是參考 AppleBOY 這篇文章 : PHP+MySQL 環境下 SQL Injection 攻防戰

//處理 SQL Injection
if( is_array($_POST) && !get_magic_quotes_gpc())
{
    while( list($k, $v) = each($_POST) )
    {
        $$k = checkhtml(mysql_real_escape_string(trim($v)));
    }
    @reset($_POST);
}

bojack 發表在 痞客邦 留言(0) 人氣()

POODLE ( Padding Oracle On Downgraded Legacy Encryption ) 的攻擊主要是透過中間人攻擊手法,將 TLS 的加密連線降為較不安全的 SSL 3.0,進而可以從中看到明文的資料

但這攻擊已經是去年的新聞了,此篇文章僅是記錄如何利用 NMAP 此套軟體來檢測

1. 首先開啟 NMAP,選取「配置」->「新的配置或命令」

poodle-1.png 

bojack 發表在 痞客邦 留言(0) 人氣()