為你的Express應用增加CSRF防護

CSRF(Cross-site request forgery)跨站請求偽造,也被稱為"One Click Attack"或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。盡管聽起來像跨站腳本(XSS),但它與XSS非常不同,XSS利用站點內的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網站。與XSS攻擊相比,CSRF攻擊往往不大流行(因此對其進行防范的資源也相當稀少)和難以防范,所以被認為比XSS更具危險性。

眾所周知,Web系統并沒有絕對的安全,就比如我們公司年前遇到的情況,有些惡心網站通過網絡抓包等手段,截取驗證碼發送接口,通過偽造請求實現了傳入任意手機號并發送驗證碼的功能,雖然這看起來并沒有什么用,但當這些不法分子拔了成百上千個接口后,就形成了一個瘋狂的短信轟炸機,對于服務提供者,這些地下網站只要有人使用,就會不斷得消耗短信費用,給企業帶來不必要的損失。 查看更多...

Android WebView內嵌網頁input無法選擇文件解決

最近發現公司APP內嵌的網頁點擊上傳圖片沒任何效果,查資料得知是Android安全限制,WebView內網頁默認沒有讀取本地文件的權限。雖然網上有解決方案,但是由于Android版本幾經波折,API簽名大相徑庭,想要完全兼容,要實現多個方法,為方便以后使用,簡單記錄一下。

首先,在使用WebView的頁面,增加如下全局變量,方便回調使用:
查看更多...

Android軟鍵盤遮擋輸入框問題解決

移動APP、網站有界面底部存在輸入框的情況,無論是原生還是WebView內嵌,在軟鍵盤彈出時,經常會有遮擋輸入框的問題,解決方法就是讓軟鍵盤彈出時窗口自適應,而非軟鍵盤直接懸浮,網上看到有三種解決方案:

1、在你的activity中的oncreate中setContentView之前加上如下代碼

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

2、在項目的AndroidManifest.xml文件中界面對應的Activity里加入android:windowSoftInputMode="stateVisible|adjustResize",這樣會讓屏幕整體上移。如果加上的是android:windowSoftInputMode="adjustPan"這樣鍵盤就會覆蓋屏幕。 查看更多...

使用cPanel主機部署基于composer、laravel的Web應用

因為希望在閑置cPanel主機上部署composer、laravel應用,簡單記錄一下(并非cPanel使用教程)。

1、登錄cPanel,在Domains一欄找到“附加域”,按照常規添加我們要綁定的域名,生成站點目錄。
2、SSH登錄cPanel主機(ip為主機ip,共享、獨享都可以,賬戶、密碼復用cPanel的賬戶、密碼),測試是否有全局安裝composer。
3、FTP或者SFTP連接主機,上傳必要文件,composer install/update,如果速度過慢,可以參照本地開發時做法,執行composer config -g repo.packagist composer https://packagist.phpcomposer.com,隨后繼續直至安裝完畢。 查看更多...

Windows VPN無法連接、無法刪除問題解決小記

家里電腦一直配置有PPTP的VPN連接,最近使用,發現不知什么時候開始不能用了,表現為連接一直進行中,不會出錯也不會成功,系統是Win8.1,而且VPN服務器是正常的(因為在其他電腦上一直用著),無奈就想刪除連接重建,發現刪除不掉。

按照網上的說法,可能是某些服務被禁止運行了,主要有Remote Access Connection Manager(遠程訪問連接管理器)和Remote Access Auto Connection Manager(遠程訪問自動連接管理器)

Remote Access Connection Manager服務的啟動又要依賴兩個服務:SSTPS(secure socket tunneling protocol service)服務、Telephony服務。而Telephony服務常處于啟動狀態,沒有問題。問題是出SSTPS(secure socket tunneling protocol service)服務上,單獨啟動SSTPS(secure socket tunneling protocol service)服務時會提示:自動停止,直接啟動Remote Access Connection Manager服務時又說依賴的服務不能啟動。 查看更多...

Android Webview增加自定義userAgent、headers

最近維護公司app,要內嵌在線網站進來,因為在線移動網站是類似常見商城的形式,底部有幾個導航按鈕,而app內嵌的情況想從網頁層面控制頁面的返回,同時再針對app內嵌情況下的界面做一些控制。

可能前面說得比較晦澀難懂,下面舉個例子,比如,頁面有12345五個底部導航,默認進首頁(1),當點擊2345的時候,在android下點擊原生返回鍵還會回到首頁(1),這樣的效果體驗不是很好,所以頁面全局攔截a鏈接,通過js采用location.replace來做跳轉,這樣一來,只要內部頁面沒有直接跳回12345五個頁面的操作,整體跳轉體驗應該和app類似了。

另一個問題,要做微信分享,但是眾所周知,網頁目前是不可能直接分享到微信(除了二維碼形式),所以這里在定義了特定協議,網頁請求如share://share?title=樸人博客&content=樸人博客…,原生app內接收后解析處理,在webview上彈出分享界面。 查看更多...

Android Studio …aapt.exe” finished with non-zero…解決

升級Android Studio為2.2.2之后,舊項目編譯出錯,Android編譯時出現如下錯誤

Error:Execution failed for task ':app:processAndroid360XmDebugResources'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\Develop\Android\sdk\build-tools\21.0.0\aapt.exe'' finished with non-zero exit value -1073741819

搜索良久,很多做法都試了不好使,偶然間發現有人說可能使用JDK8的緣故,果斷切JDK7嘗試,嘗試結果是根本切不回去,Android Studio 2.2.2提示使用JDK 8或者更新的版本。 查看更多...

sudo * 提示 command not found 解決

linux下經常遇到使用非root用戶安裝軟件,使用sudo時提示找不到命令。

比如使用nodejs時候,出現

sudo: node: command not found
sudo: npm: command not found

很多文章說export臨時修改環境變量或者直接sudo后chown指定命令所在文件夾的所有者,但是我們通常是在非root用戶下使用,所以只需在root用戶下增加部分軟連接即可 查看更多...

iScroll5實現卡片左右滑動及動態加載

iScroll5是在iScroll4的基礎重構而來,使用時發現網上大部分例子都是基于iScroll4,在iScroll5上面并不適用,比如橫向滾動、當前索引、元素對齊等,這些不在贅述,有需求可以考慮去看看源碼(重構過的源碼看起來清爽很多)。

因為自己需要一個卡片左右滑動的效果,同時還希望有邊界對齊的能力,不清楚這個效果有沒有類似實現,大概看了下,新版iScroll也不是很大,就直接拿來用了,效果如下圖所示:

iscroll5-1
查看更多...

安卓Adapter中getView方法重復執行及索引錯位問題解決

Android開發中,經常會用到ListView,當然,也會用到Adapter為ListView綁定數據。通常,我們采用繼承BaseAdapter并實現getView等方法的方式為ListView渲染數據,ListView中每個元素都會去調用getView做渲染。但是,如果ListView要展示數據非常龐大,創建成百上千個View是不可取的,于是乎,Android為我們提供了一套Recycler機制,可以重復利用已創建的View,降低對象開銷。

原理如下:

在一個完整的ListView第一次出現時,每個Item都是null的,getView的時候會跑到需要inflate一個Item的代碼段,假設整個view只能最多顯示10個item,那么當滑動到第11個Item的時候,第一個item會放入"recycler",如果第11個Item和放入"Recycler"的item的view一致,那么就會使用"Recycler"里面的Item來顯示,從而不用再重復inflate一次。

圖示如下:

adapter-recycler
查看更多...

黑龙江22选5开奖