2017年3月12日 星期日

Android如何正確處理 WebView SSL 錯誤處理

●官方說明:
自 2016 年 11 月 25 日起,只要新的應用程式或更新內容含有這個SSL Error Handler安全性漏洞,一律禁止在 Google Play 發佈。

如要解決這個問題,請更新應用程式的程式碼,在伺服器提供的憑證符合預期時叫用 SslErrorHandler.proceed(),不符合預期時則叫用 SslErrorHandler.cancel()。


●以往大家都在WebView的onReceivedSslError事件中直接忽略檢查,使應用程式含有SSL Error Handler安全性漏洞。
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
    handler.proceed();
}


●現在應該要正確的處理onReceivedSslError事件,才可在 Google Play 發佈。
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
    SslCertificate sslCertificate = error.getCertificate();

    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("SSL 憑證錯誤");
    builder.setMessage ("無法驗證伺服器SSL憑證。\n仍要繼續嗎?");
    builder.setPositiveButton("繼續", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.proceed();
        }
    });
    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.cancel();
        }
    });

    final AlertDialog dialog = builder.create();
    dialog.show();
}

2016年9月20日 星期二

Windows Server 2012 R2、 IIS 8.5、遠端桌面,停用SSL 3.0、TLS 1.0、TLS 1.1協定、停用RC4、3DES加密套件、停用Diffie Hellman KeyExchangeAlgorithms

SSL 3.0、TLS 1.0、TLS 1.1 加密協定存在中間人攻擊弱點,RC4、3DES加密套件有漏洞、停用Diffie Hellman KeyExchangeAlgorithms,如果網站有使用HTTPS、主機有啟用遠端桌面者,強烈建議關閉。

環境:
Windows Server 2012 R2
IIS 8.5
已啟用HTTPS或主機有啟用遠端桌面

修改方式:
透過修改機碼的方式,先執行regedit.exe,並至路徑[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL]。

停用SSL 3.0
1.在Protocols目錄下新增機碼,名稱輸入「SSL 3.0」。
2.在SSL 3.0目錄下新增機碼,名稱輸入「Client」及「Server」。
3.於Client目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
4.於Server目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用TLS 1.0
1.在Protocols目錄下新增機碼,名稱輸入「TLS 1.0」。
2.在TLS 1.0目錄下新增機碼,名稱輸入「Client」及「Server」。
3.於Client目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
4.於Server目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用TLS 1.1
1.在Protocols目錄下新增機碼,名稱輸入「TLS 1.1」。
2.在TLS 1.1目錄下新增機碼,名稱輸入「Client」及「Server」。
3.於Client目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
4.於Server目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用RC4加密套件
1.在Ciphers目錄下新增機碼,名稱輸入「RC4 128/128」。
2.於RC4 128/128目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用3DES加密套件
1.在Ciphers目錄下新增機碼,名稱輸入「Triple DES 168」。
2.於Triple DES 168目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用 Diffie Hellman KeyExchangeAlgorithms
1.在KeyExchangeAlgorithms目錄下新增機碼,名稱輸入「Diffie-Hellman」。
2.於Diffie-Hellman目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

2016年7月21日 星期四

CentOS禁止從遠端以root帳號登入

說明:root帳號可以從遠端登入是危險的,在管理上也會有問題,所以應該限制root帳號從遠端登入。


系統版本:CentOS 5.11

1.修改/etc/ssh/sshd_config
PermitRootLogin no (預設為yes)

2.重新啟動 sshd
/etc/init.d/sshd restart

2016年4月16日 星期六

Redmine加入Gitolite的 Git Repository

環境:
Ubuntu + Redmine + Gitolite3
Gitolite所管理的目錄為/home/git

說明:
git repository在Gitolite的管理下,預設只有git帳號才可存取,Redmine並無權限存取Gitolite控制的repository,所以需調整權限使Redmine可以存取。

Redmine是由Apache執行,所以是由www-data帳號在執行,為了使www-data帳號可存取git目錄,需將www-data帳號加入至git群組中,並修改Gitolite預設的上傳權限使git群組可存取。

步驟:
1. 將用戶www-data加入至git群組中。
sudo usermod -a -G git www-data

2. 修改Gitolite預設上傳時的權限,修改/home/git/.gitolite.rc檔案。
UMASK => 0077,
改為
UMASK => 0027,


3. 允許git群組存取repositories資料夾。(群組權限增加R、X)
sudo chmod g+rx /home/git
sudo chmod g+rx /home/git/repositories

4.如有已上傳之repository,請變更權限。(群組權限增加R、X)
sudo chmod g+rx -R /home/git/repositories/YourRepo

5.於Redmine中設定repository的位置即可。

2015年9月28日 星期一

PowerBuilder使用saveas()函數列印成PDF

1. 先下載及安裝Ghostscript。(如PowerBuilder是32位元者,必須安裝32位元版本。)
2. Windows 10 作業系統,先自HP官網下載及解壓縮HP Postscript印表機驅動程式。

3. 新增一部名稱為「Sybase DataWindow PS」的印表機。
  • 開啟控制台->裝置和印表機->新增印表機->新增本機印表機。
  • 印表機連接埠,請選擇「使用現有的連接埠」,並且選擇「FILE:(列印至檔案)」。
  • 印表機的驅動程式可以選擇任一款機型的印表機,只要印表機名稱最後是「PS」結尾即可。(製造商HP,印表機名稱中最後是「PS」者)  (windows 10 作業系統者,請選「從磁片安裝(H)...」,選擇HP Postscript印表機驅動程式目錄進行安裝。
  • 最後將此印表機命名為「Sybase DataWindow PS」。切記,大小寫及空格都要一致,也不可打錯字。 
  • 如果提示「Windows無法驗證此驅動程式的發行者」,請點「仍然安裝此驅動程式」繼續執行。
  • 成功後會出現一台名為「Sybase DataWindow PS」的印表機。
4. PowerBuilder已可使用saveas()函數列印成PDF類型檔案了。

2015年9月4日 星期五

phpmailer Fatal error: Class 'SMTP' not found

使用phpmailer寄送SMTP信件時,發生Fatal error: Class 'SMTP' not found錯誤。

原因:程式執行時找不到class.smtp.php檔案,故顯示無法找到'SMTP' Class。

解決方式:phpmailer 5.2.8開始,需使用「require 'PHPMailerAutoload.php';」的方式,次檔案將會自動引入「class.phpmailer.php」、「class.smtp.php」檔案。

無法使用Gmail的SMTP服務寄送郵件

程式開發時,常常會有使用Gmail的SMTP服務寄信的需求,當程式設定都是正確的時候,但是執行時總是出現SMTP connect failed的問題,可以檢查Gmail的下列設定,此設定是必需經過google允許,才能使用Gmail的SMTP服務寄信。

1.Gmail-> 設定->設定->帳戶和匯入->變更帳戶設定->其他 Google 帳戶設定。

 

 2.登入和安全性->已連結的網站與應用程式。



 3. [允許安全性較低的應用程式] 設定處於啟用狀態->設定為開啟。