變數在 xx 的處理方式

這陣子抓 bug 的時候發現連自己都要想半天,還是整理起來好了... 假設 $v 是未經過濾的變數,要放到不同地方要做不同的處理:

  • MySQL Statement:這已經是標準了,mysql_escape_string($v) 或是 mysql_real_escape_string($v),或是改用 prepare + execute 的模式。
  • 放在 HTML Form 的 input 元素裡面:要用 htmlentities($v, ENT_QUOTES) 過濾後用 double-quote 包起來,原因是 $v 可以是 "><script> ... (一堆邪惡 js 程式碼) ... </script>",這是一種 XSS 攻擊。
  • 放在網址的 GET 參數裡:用 urlencode($v)
  • 呼叫外部程式帶入參數時 (像是 system() 呼叫):用 escapeshellarg($v)

Redirection Plugin

的 Blog 上看到的 WordPress Plugin,以往必須寫在 .htaccess 寫 mod_rewrite 的工作,現在可以用 這套 Plugin 設定。

在網頁上有個五分鐘的影片可以看,看完以後就大致知道要怎麼操作,除了一般的一對一對應外,還可以設定 Regular Expression (像是把 /blog/plugins/(.*) 重導到 /plugins/$1),甚至還可以做 proxy (影片中的 )。另外還有一些奇怪的功能 (像是可以設定 /fun 指到隨機的頁面 XD),其實看起來還蠻有趣的...

可是實際會需要這個用途的人到底有多少呢... @_@

GPL 與 PHP License

這陣子在 的 mailing list 上剛好提到 PHP binding 的問題,結果引伸出來的 license 問題。查了資料以後,在 上有張表格:List of FSF approved software licenses

簡單來說, 不相容的原因都一樣:因為廣告條款的關係。

想要用其他方式解套 (像是有人提出用 過水) 都會因為 有感染性而不太容易處裡: 軟體本身是 MIT-style 與 BSD-style license,但是他產生出來的 wrapper code 因為使用了 GPL library,所以包成 binary 時還是會受到 GPL 影響。

反正這類問題滿天飛...

狼與辛香料 II 以及動畫化消息

買回來以後其實很快就看完了 (這本在我書單裡的優先權很高的),一直沒有 post 出來而已 :p 照的說法是:

01:16 <@S> 鹹狼第二本..... 這..... 商業詐欺 期貨破產 黑吃黑 威脅利誘 都來了... !@#$%

我覺得這個描述實在太棒了 XDDD 總而言之,這本輕小說仍然保持著極高的水準,依然是強烈推薦大家買來看。

動畫化的消息是在日文版第五本的書腰上公佈的,不過這種小說水準超高 + 內心戲超多的情況下,請不要太期待 XDDD

jQuery 1.1.4

1.1 的最後一個版本:

這個版本速度比 1.1.3.1 更快,看起來是對幾個最簡單、最常用的 Selector 特殊處理,像是 $("#id") 的改善就很明顯,在所有的瀏覽器裡都快了許多。另外多了一些新的功能,像是 .slice()... (這功能好!)

大小的部份,可以看到 慢慢變大了。1.1.2 是 21235 bytes,1.1.3 是 21472 bytes,1.1.3.1 是 21557 bytes,1.1.4 是 22679 bytes,這次長了 1KB。

1.1.3.1 到 1.1.4 中間的新功能與 bug fix 在 可以看到,看起來不少 bug 被修正... (這代表會有更多 bug?XD)

CSS 攻擊法

這篇講到的兩個誘導使用者進行不安全操作的方法:

  • CSS overlays:利用 iframe + CSS,只顯示部份的內容,讓使用者去誤擊某些不安全的操作。
  • Submit buttons:把 submit button 的 border 拿掉,字體改一改,讓他看起來很像普通的 link。

前面那個可以用 js + Referer 解決大部分的問題 (對於有防火牆把 Referer 擋掉,而且沒有 js ability 的用戶,暫時想不到解法...),後面可以用 Double Cookie 解決。

來找看看 有沒有 Plugins 可以加強這些安全上的問題...

WWW SQL Designer

上看到這個用 JavaScript 做出來的介面,拿來畫 SQL 關係圖還不錯:

要注意的是他產生出來的 SQL 指令並沒有把 FK 放進去 (至少 都是),所以畫完後要自己轉成 SQL CREATE TABLE 的指令。雖然如此,但對於拿來釐清一些複雜的架構還不錯...