在烏云上看到一個基于php的webshell攻擊。
高度隱蔽的webshell,使用普通的php代碼將真正的shell內容經過層層加密處理之后保存到圖片當中,只留下一個url,并且url還是經過加密處理的,所以對外看沒有任何特征可尋,使其很難被發現,當打開上述url時,,顯示的是404,而這個404頁面就是偽裝為404的木馬,只是把標題改為了404 Not Found。
二、不用或少用else語句對于if else 有人追求結構的完整,有if必有else,這看起來或許是不錯,不過有時會帶來代碼的繁瑣,而且可能會導致邏輯的混亂;可以以一種結果為基準,當發生其他情況時做if判斷;即默認A,有異常則為B:
三、單頁面結構(Single-page application)單頁面就是一切操作和布局都是在一個頁面下進行,不需要頁面跳轉,根據不同的用戶請求加載不同的內容。
優點:頁面結構簡單,數據量小,節省帶寬,響應快,體驗好,易于開發、維護以及優化;
缺點:使用ajax技術,導致不利于seo。
四、讓搜索引擎抓取ajax的內容主要針對上一案例的單頁面結構,程序通過#結構url控制頁面內容,但不會被搜索引擎抓取。
方法一:twitter使用"井號+感嘆號"的結構,但體驗不好而且繁瑣;
方法二:使用History API;在不刷新頁面的情況下,改變瀏覽器地址欄顯示的地址。步驟如下:
A、用History API替代井號結構,讓每個#號都變成正常路徑的URL,這樣搜索引擎就會抓取每一個網頁。
B、定義一個JavaScript函數,處理html' target='_blank'>Ajax部分,根據網址抓取內容。
C、定義鼠標的click事件,使用History對象的popstate事件處理瀏覽器的"前進 / 后退"按鈕。
D、設置服務器端。
五、CURL_MULTI_INIT()以前一直使用curl_init(),最近看到有curl_multi_init();本以為會帶來更高效的代碼,看了下curl_multi的步驟,感覺相當繁瑣,而且curl_multi可能會造成cpu過高、網頁假死等現象;同時對比了curl_init和curl_multi_init,多線程在速度上不一定優于單線程,多線程只是能在同時處理多任務,時間成本不一定低。附上curl_multi的使用步驟:
第一步:調用curl_multi_init;
第二步:循環調用curl_multi_add_handle;
這一步需要注意的是,curl_multi_add_handle的第二個參數是由curl_init而來的子handle;
第三步:持續調用curl_multi_exec;
第四步:根據需要循環調用curl_multi_getcontent獲取結果;
第五步:調用curl_multi_remove_handle,并為每個字handle調用curl_close;
第六步:調用curl_multi_close。
六、PHP strstr()函數strstr(string,search)搜索一個字符串在另一個字符串中的第一次出現。返回字符串的其余部分(從匹配點)。如果未找到所搜索的字符串,則返回 false。
search 必需。規定所搜索的字符串。如果該參數是數字,則搜索匹配數字 ASCII 值的字符。
參考:http://www.w3cschool.cn/func_string_strstr.html。所以,在給第二個參數時,如果需要匹配數字,建議加上引號。
七、論規范化的重要性家附近的一條久治不下的道路,通過劃分出人行通道、非機動車道、機動車道,使得問題一下子等到了解決。有時候靈活導致選擇過多,問題也會很多;程序亦如此,用戶輸入的靈活看起來很不錯,其實在后臺處理時是需要更多的成本,何不在前期就進行規范化,bug止于源頭,而不是亡羊補牢。規范化使一切流程變得簡單高效。
八、HHVMHHVM (HipHop Virtual Machine)會將PHP代碼轉換成高級別的字節碼(通常稱為中間語言)。然后在運行時通過即時(JIT)編譯器將這些字節碼轉換為x64的機器碼。
從各項數據表明,和Zend相比,HHVM變得更高效,CPU負載降低,平均頁面加載時間也縮短。HHVM的存在是為了優化PHP運行性能,和php5相比,確實存在一些優勢,還是坐等php7吧。
九、PHP源碼簽名收集器當學習新的、不熟悉的源碼時,對代碼結構獲取直觀的感受是很重要的。可以通過從每個源文件中逐行獲取標點進行總結,即文件簽名。這可以幫助考量代碼的復雜度。其實也就是提取代碼文件中固定的符號呈現文件的結構。
參考:http://c2.com/doc/SignatureSurvey/
十、協同過濾推薦算法1、基于內容的推薦算法的前提假設是:如果用戶喜歡物品a,那么用戶也應該會喜歡與a類似的物品?;舅枷胧遣鸱謨热輰傩裕崛∠嗤瑢傩缘膬热葸M行推薦。
2、協同過濾推薦算法的前提假設是:如果用戶a與用戶b均對一系列相同的物品表示喜歡,那么a極有可能也喜歡b用戶喜歡的其他物品?;具^程是用戶首先為每個item進行評價打分,通過計算不同用戶評分之間的相似程度,可以找到最近鄰居,根據最近鄰居的評價,產生推薦。
上述算法都是運用了矩陣建模,使用到余弦相似度、皮爾遜相似度等公式。使用中可將二者合二為一推薦。
PHP編程鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答