Category:Experience
Found 53 records. At Page 5 / 11.
-
2017-04-01 17:32:37更新於 2017-05-04 20:31:40
作為長久以來的網站架設與經營者,我做個簡短的介紹各種網站服務的型態,以及為何選用VPS架設自己的網站。
架設網站通常有很多種形式,尤其是Web Shared Hosting,這種服務通常是沒有自己的硬體資源,而且還必須和其他帳號共用資源,例如CPU、RAM,如果太高可能導致帳號被停用。另外就是IP也是共享的,除非加付錢買獨立IP,不然通常是同一個IP架設很多個網站對應不同的域名,這是最便宜的網站架設方案,一個月可能只有一美金至十幾美金,也是我最不推薦的一種。
第二類就是Dedicated Web Hosting,擁有自己的空間流量、包刮CPU、RAM、IP…等,差不多等於一台伺服器就只架設一個網站,但代價就是價格非常的高,一個月會花上幾十美金至上百美金。
接著還有所謂的Cloud Hosting,和Web Shared Hosting是很類似的,只是它比較穩定,而且是由多台伺服器在一起,價格也不會特別昂貴。缺點是更新了網站資料要同步更新到很多台電腦上面。
最後,就是VPS(Virtual Private Server)了,將一台機器的設備切割成很多分不同的部分,不過,每個使用者是有自己的RAM、CPU、甚至是獨立IP,並且大多數的供應商都會提供ROOT權限(最高權限),所以,同一台設備上其他用戶怎麼操作都不會消耗到你自己的硬體資源!相對於上面所提到的各種服務,這算是比較折衷的方案,而且也比較深入系統,可以運行的程式不單單是WebServer,想架什麼就有可以架什麼,整個系統都是自己的,通常是要有一定Linux操作經驗,當然也有賣Windows系統的VPS。
我個人是偏好Linux,覺得比較好,沒有用太多資源,導致自己的資源變少的問題,價格又不會太高昂。除非買配備更高級的方案,價格從幾美金到上百美金都有。
VPS供應商很多個,現在有幾個很熱門的VPS,如:DigitalOcean、Linode、AWS,我個人是推薦Linode拉,覺得穩定,速度也還不錯。性價比感覺比較高。目前用了接近一年,網站上線率算高的,雖然"偶爾"(每幾個月)可能會被DDOS,導致下線,但也是極少數發生的情況,而且這是所有服務供應者的通病。
Linode的方案:超連結

DigitalOcean的方案:超連結

以十美金的方案來比,還是Linode勝出!價格相同,記憶體多1GB。
推Linode:https://www.linode.com/
有網友有其他意見,歡迎留言。

WeilsNetLogo
This entry was posted in General, Experience, The Internet, Note, WebHosting By Weil Jimmer
.
-
2017-01-12 21:21:02更新於 2017-03-14 14:08:38

如上圖所示,工作列可以有進度條。本方法需要較底層,所以必須調用外部API。
請先下載參考:WindowsAPICodePack
載點一:
https://sites.google.com/site/1456wbff/home/WindowsAPI.7z?attredirects=0&d=1
載點二:
https://mega.nz/#!0J9BSbYB!4svqcg8liM6fRGDc9Zk-D_NjNzdMF5GEHY6vzLt13rY
載點三:
http://cht.tw/h/nrkw9
下載完畢後匯入參考,並使用代碼:
public void set_status_taskbar ( int value_, int max_ ) {
if ( Microsoft.WindowsAPICodePack.Taskbar.TaskbarManager.IsPlatformSupported ) {
var taskbarInstance = Microsoft.WindowsAPICodePack.Taskbar.TaskbarManager.Instance;
taskbarInstance.SetProgressState(Microsoft.WindowsAPICodePack.Taskbar.TaskbarProgressBarState.Normal);
taskbarInstance.SetProgressValue(value_, max_);
}
}
public void set_status_finish () {
if ( Microsoft.WindowsAPICodePack.Taskbar.TaskbarManager.IsPlatformSupported ) {
var taskbarInstance = Microsoft.WindowsAPICodePack.Taskbar.TaskbarManager.Instance;
taskbarInstance.SetProgressState(Microsoft.WindowsAPICodePack.Taskbar.TaskbarProgressBarState.NoProgress);
}
}
僅此作為筆記。
WeilsNetLogo
This entry was posted in C#, General, Experience, Note By Weil Jimmer
.
-
2016-08-05 12:43:04更新於 2017-10-17 22:29:26

眾所皆知要監聽帳號密碼已經不是難事,如上圖所示已經取得了"非HTTPS"加密連線的帳號密碼。最近研究少有成果,來寫篇文章留個紀念,當作我已經懂了原理。若有錯還請各位高手指正。

正常HTTP連線是不會有任何駭客可以侵入,例如手機網路(不談破譯基站或偽造基站)、非共用的私人網段。

一旦在區域網路上有他人的存在,就可能造成資安漏洞被MiTM(中間人)攻擊,竊聽信用卡、帳密…等資訊,例如:公用電腦、公用WiFi。所以很多重要網站(如:Google、FB)都有透過加密連線。如下圖所示,綠色鎖頭 https。

HTTPS的誕生就是預防被竊聽,它的加密現在有兩種形式,一個是RSA、另一個是ECC,都是利用數學難題作為基礎來加密資訊。

由上圖可知,每台電腦在出廠時,都會有"證書"存在自己電腦,不需要經過網路傳輸。也就是 CA Root 。所有證書的簽發都是一層一層向下簽,CA簽發給CA下的單位如DV、OV、EV證書驗證機構,再簽發給域名。而瀏覽器默認信任CA Root,由於來源可靠,故此域名就跟著被一塊信任。


當攻擊者想要竊聽 HTTPS 時會造成問題,因為攻擊者沒有私鑰,無法解密訊息,導致此監聽就無意義了,故只能偽造證書。但是偽造證書會出現一個問題,瀏覽器會警告用戶此證書不可信任(域名錯誤、來源不可信…等)!


所以攻擊者需要監聽HTTPS的辦法就是,想辦法讓瀏覽器不要透過HTTPS連線,利用SSLStrip可以達到此目的,假設此伺服器是強制HTTPS的情況,就會變成駭客與伺服器做安全連線,而真實用戶與駭客間採用HTTP連線。

因為這種情況的發生,所以進而加入一個新功能HSTS,嚴格HTTPS連線,一旦連上了HTTPS,就會發送HSTS頭部訊息,瀏覽器接收後,此後不管任何到此域名的連線都會變強制在本地端做307導向。使攻擊者只能接受並原封不動的傳送此連線資訊,而無法被監聽。

但不少用戶在瀏覽器網址框都是直接打 域名 或是 打 http:// 而不是 https:// ,所以普遍用戶都是 301 轉跳到 HTTPS,在第一次連接時的頭部訊息,如果發動了攻擊,就可以偽造後續所有連線,所以…SSLStrip還是略勝一籌阿。

基於此緣故,現行網際網路又推行了一個新東西:HSTS preload,顧名思義,預先載入,各網站的擁有者可以登入自己的域名到 preload list,等日後瀏覽器更新時,就會把這些網站列表編譯進瀏覽器內。此後瀏覽器,不用透過 301 轉向,直接查詢網站是否在清單裡,如果存在,則直接強制HTTPS連線,就算用戶輸入 http:// 開頭,還是一樣強制307轉跳到https連線。

這已經是終極預防措施,不過,經過我去查網路上某資訊得知,這個清單在Chrome瀏覽器中並非靜態,造成可以利用Delorean時間竄改工具(參考),攻擊瀏覽器,使之 preload 清單的 域名 過期,回到原本 先訪問 HTTP 再 轉跳 HTTPS 的模式,造就了 駭客再次入侵。SSLStrip 還是贏了……防不勝防!上網時要注意看是不是綠色鎖頭喔~

WeilsNetLogo
This entry was posted in General, Experience, The Internet, Note, WebHosting, Wi-Fi By Weil Jimmer
.
-
2016-08-04 16:28:42更新於 2016-08-04 20:48:17

最近很常研究 Email,由於是自己架設伺服器,比較麻煩,所以更深入研究了一下下。
今天想到就寫一篇,真實檢查 Email 的方法,因為這個不是驗證 Email 格式與否,而是直接驗證 此Email是否存在,並且無須寄信即可以檢查。
首先先查詢 Email @後域名的MX紀錄,再查此IP,得到 IP 後即可透過 TCP 連線至該 SMTP 伺服器驗證以確立此 Email 確實存在,而不是亂打的。
//Check email is exist
var_dump(check_is_email_real_exist("test@example.com"));
function check_is_email_real_exist($email_address){
if ((!filter_var($email_address, FILTER_VALIDATE_EMAIL)===false) and strlen($email_address)<=254){
$emailxx=explode('@',$email_address);
$dns_lookup_result=dns_get_record($emailxx[1],DNS_MX);
if (count($dns_lookup_result)==0){
return false;
}else{
$address=gethostbyname($dns_lookup_result[0]['target']);
if ($address!=''){
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
return false;
}
$result = socket_connect($socket, $address, 25);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
return false;
}
$in = "HELO hi\r\n";
socket_write($socket, $in, strlen($in));
if(substr(socket_read($socket, 2048),0,3)=='220'){
$in = "MAIL FROM:<thisistest@gmail.com>\r\n";
socket_write($socket, $in, strlen($in));
if(substr(socket_read($socket, 2048),0,3)=='250'){
$in = "RCPT TO:<$email_address>\r\n";
socket_write($socket, $in, strlen($in));
if(substr(socket_read($socket, 2048),0,3)=='250'){
$in = "QUIT\r\n";
socket_write($socket, $in, strlen($in));
if(substr(socket_read($socket, 2048),0,3)=='250'){
return true;
}else{
return false;
}
}else{
return false;
}
}else{
return false;
}
}else{
return false;
}
}else{
return false;
}
}
}else{
return false;
}
}
代碼醜陋,請各位看官不要介意。
WeilsNetLogo
This entry was posted in General, Experience, Functions, PHP By Weil Jimmer
.
-
2016-07-25 17:44:55更新於 2016-07-25 17:48:02
這是我現在所用的方法,直接分享出來,備份壓縮網站資料與資料庫十日,自動刪除近十日之外的檔案。
建立一個 backup.sh 檔案,內容如下:(FTP地址帳密、網站路徑、資料庫密碼…要自己修改一下)
#!/bin/sh
THESITE="example.com"
THEDATE=$(date +%Y-%m-%d_%H_%M_%S)
mysqldump --defaults-file=/home/user/secret.cnf --user=root --host=localhost --all-databases | gzip > /var/www/$THESITE/backup/db_$THEDATE.sql.gz
tar czf /var/www/$THESITE/backup/site_${THEDATE}.tar /var/www/$THESITE/public_html/
gzip /var/www/$THESITE/backup/site_${THEDATE}.tar
find /var/www/$THESITE/backup/site* -mtime +10 -exec rm {} \;
find /var/www/$THESITE/backup/db* -mtime +10 -exec rm {} \;
echo "OK"
ftp -n 31.170.xxx.xxx <<End-Of-Session
user USERNAME "PASSWORD"
binary
cd /public_html/backup/secret_path
put "/var/www/$THESITE/backup/db_$THEDATE.sql.gz" "db_backup.sql.gz"
put "/var/www/$THESITE/backup/site_${THEDATE}.tar.gz" "site_backup.tar.gz"
bye
End-Of-Session
wget http://backupsite.com/ -O /tmp/keep_online
rm /tmp/keep_online
創一個文檔在 /home/user/secret.cnf (或你喜歡的地方),然後設定權限 400 或 600 內容填入如下。
[client]
password="MYSQL_PASSWORD"
最後 在終端機 打指令
crontab -e
在最下面加入:(設定定時任務,零時零分自動備份網站並透過FTP外寄出去)
0 0 * * * sh /the_path_you_want/backup.sh
這樣就可以完成幾乎全自動的備份。
WeilsNetLogo
This entry was posted in Bash, General, Experience, Functions, Note, WebHosting By Weil Jimmer
.