Hank Lin

A new blog

Preventing XSS (I)

| Comments

作網站要很注意XSS, 和SQL Injection, 可以說是基本中的基本. 這一篇文章是我對如何防止XSS(Cross-Site Scripting)的看法, 但是絕不能認為注意到我提到的地方就可以完全防止了. 攻擊的方法不斷地更新, 網站開發者也要隨時提高警覺, 注意新消息才能避免自己的網站成為下一個受害者.

基本原理

以現今的網站來說, 幾乎已經沒有完全靜態的網站. 只要有顯示動態資料, 尤其是使用者產生的資料, 就有被XSS的可能. XSS的型態有非常多種, 但主要都是為了要插入一段攻擊者寫的JavaScript, 一但攻擊者能這麼作, 你的網站就能被他利用, 可以作非常多事, 像是偷取網站和其它使用者的資料, 或是讓使用者去安裝殭屍程式. 可以加個

View more presentations from Hank Lin

這張是我的AWS書在博客來的新書排行, 在電腦語言的分類, screen capture下來, 以後才不會看不到, 哈哈! (狀態顯示為心機重…) 下一個目標是”暢銷排行榜”!

Survive AWS Judgment Day

| Comments

SkyNet

前幾天還看到很多朋友提醒, 2011-04-21就是SkyNet開始發動攻擊的日子了. 這當然是搞笑, 但是沒想到, 真的把AWS打掛了! (沒錯, AWS掛掉的時間是美國2011-04-21) 這次的災情相當慘重, 可以說是一片混亂, 哀鴻遍野. 一直到現在截稿為止, 在美東地區還有一些EBS, EC2, RDS無法連線. 很多新興網站都掛了, 所以將來AWS應該要更小心, 因為除了自己掛掉, 自己也成為更明顯的目標. 我的news feed上有一大堆AWS的訊息, 可見AWS真是有夠多人在用的. 美國鄉民也發揮了許多創意, 搞笑諷刺都很成功. 有人趕快大讚自己有過人的先見之明, 能全身而退. 有人全力嘲諷, 也有人是不滿AWS掛掉, 但是明白自己的責任也不小.

挖苦大軍

AWS Downtime counter 提醒你目前AWS的Downtime, 目前還在不斷的流逝中… aws downtime count AWS Downtime 好啦, awsdowntime.com被註冊了, 就改註冊 .me了! 已經掛很久啦, AWS! EC2 disabled 上面列了被AWS影響到的網站, 真的有夠多的, 你也可以回報掛掉的網站. 不知道回報不是AWS架的網站會怎麼樣? SkyNet does not responsible for AWS outage 有人在forum上面問了, AWS的人也很正經的問答了, 讓我憋著笑好難過啊! 不過這個阿宅梗好像很多人不知道, SkyNet就是魔鬼終結者, 裡面的機器人大軍. 而開始攻擊人類的日子有許多說法, 有一個就是2011-04-21啦! 還有人說, 其實SkyNet就是EC2! 但是還好, EC2掛了, 不然掛的就是我們人類了.

封面與內容不符

有幾篇文章, 講得很不錯, 主要就是一個重點, 就是AWS的地區與所在地的說法, 和這次的災情「封面與內容不符」! 原來AWS的所在地(Availability Zone)已經是獨立不受影響的資料中心了, 不應該一起掛掉. 尤其是us-east地區有4個Availability Zones, 應該要很容易可以換到別的Availability Zone繼續服務才對啊(如果你有備份好的話). 所以要嘛不是AWS沒有做好, 不然就是真的太倒霉一起掛掉. 我是看到有人說指定Availability Zone會沒有capacity, 但是不指定的話就能開EC2 instances了. 所以我猜後來大概是capacity不夠的關係.

如何在AWS審判日存活

好啦, 還是來看一點有建設性的文章. 重點有以下幾點:

  • EBS snapshot: EBS volumes雖然是persistent, 但是無法跨Availability Zones. 定期對EBS volumes作snapshot還是很有必要, 除了有一個明確的回復點之外, 還可以用snapshot開新的EBS volumes在不同Availability Zones. 能夠較快速回復
  • 如果把靜態檔案備份到S3上, 可以提高可用性. 比較簡單的服務不容易壞, 可以用S3或再加上CloudFront提供唯讀服務, 或是sorry頁面.
  • 一台EC2 instance最好不要太多角色, 避免備份, 回復, 以及scale out的困難
  • 最難搬的資料庫(尤其是RDBMS的話), 還是定期備份到S3一份. 雖然不能讓你馬上回復, 但是可以讓你在別的availability zone甚至region另起爐灶, 先提供read-only的服務(當然你要有作這些開關)

參考文章:

好啦, 寫太多了, 不要再寫了, 我要準備講稿了. (打哈欠)

AWS Goes Down, Web Sites Go Down, Too

| Comments

最近AWS有一些服務都有中斷的情況, 造成很多網站沒有辦法正常工作. 像是許多新興的網站: foursquare, quroa, reddit都無法連線, 想當然很多酸言酸語又出來了, 有的是笑說AWS怎麼會失效, 不是說設計成不會失效嗎? 有的說雲端運算果然還是沒有自有機房來的穩. 看到這些評論我也有些話想說.

AWS從來沒說它never fail

AWS有SLA的服務, 都有說明它的availability, 可以作為參考. 如果這個服務低於SLA說明的availability, 就會退一個比例的費用, 說明得很清楚. 風險在於, 你沒辦法控制AWS什麼時候失效. 自有機房或是傳統的租用主機就沒有這個風險了嗎? 如果你可以控制機器什麼時候失效, 那就不是風險了. 如果你有看AWS的health dashboard, 就可以看到us-east地區的EC2以及其它一些服務有問題, 如果你使用這些地區的AWS服務, 就可能會被影響到. 但是如果你看一下其它地區, 如Asia或Europe, 就可以看到所有服務都正常. (和我猜想的一樣) AWS提供多地區的服務, 就是能夠讓你快速的把系統由不同地區的機房來服務. 我知道這個很難作到, 主因是放置資料通常還是只能在一處, 但是cloud computing讓這個作法成為可能.

How much do you want to pay

“雲端運算果然還是沒有自有機房來的穩”, 這句話我同意, 但是我要問一句, 那你準備花多少錢? 除了機器硬體, 水電頻寬房租, 管理員薪水, 所有capacity都要以系統的最大使用量來計算. 如果要異地備援, 簡單的乘以2就好. 別忘了你要求的是高可用性, 所以硬體架構和管理員都要選high-end的. 我相信”雲端運算果然還是沒有自有機房來的穩”, 但是一般網站或公司是花不起的.

quora有情有義

看一下這篇文章: Amazon EC2 troubles bring down Reddit, Foursquare, Quora, Hootsuite and more, 我不得不說quora真是有情有義啊, quora寫道: We’d point fingers, but we wouldn’t be where we are today without EC2. 看! 如果我是Amazon的人, 我看到這句話眼淚都要掉下來了. 這句話包含了千言萬語, 新網站利用EC2快速擴充的能力, 快速壯大, 服務更多使用者. (當然, 掛掉了也有一個對象可以責怪, haha!)

最近行程

最近在準備一些training和演講, 我是可以都用同一套來講啦, 但是以我龜毛的作事態度, 我都會盡量重新編排內容, 所以會花我很多時間. 希望我可以更有效率的處理準備教材的事, 其實花最多時間的地方是找合適的圖, 因為漂亮的圖大部份都要授權, 所以常常要找好久啊!

Spot EC2 Cluster Instances

| Comments

想要偷懶一下都不行, AWS新功能更新的很快, 其實我已經漏了一段時間的AWS新功能沒更新(很明顯, 大概就是之前4個月左右的新功能). 現在要來補完啦!

EC2 Cluster Instances can be spot instances

EC2提供的HPC, 如Cluster Compute 及Cluster GPU現在可以用Spot Instances計費了! 這真的很讚啊, Spot Instances一般比On-Demand便宜50%到60%, 所以想使用Cluster Compute及Cluster GPU, 又被高價嚇到的話, 可以試著結合Spot Instances來省錢! 我之前分享的“Multi-Region Uploading”, 裡面的”Async. Worker”就非常適合使用Spot Instances計費啊! 完全不用怕被EC2關掉導致工作資料流失. 用這個來處理轉檔, 尤其是像CPU intensive的影片檔處理, 用Cluster Compute的instances是最適合的. 可以用很便宜的錢快速的轉好檔案, 是不是有點讓人心動了呢? 讓我也想寫個應用啊…

S3 Encryption Client

資料機密性, 是把資料放在服務提供者那邊最大的考量. 最簡單的作法是, 先把資料加密, 再傳到儲存服務上. 要讀取的時候, 下載好再解密, 很麻煩但是安全多了. 現在AWS SDK for Java 把這段也幫你作好了, 也就是改用AmazonS3EncryptionClient這個class. 支援對稱(symmetric)和非對稱(asymmetric)兩種加密方式, 使用標準Java Cryptography Architecture (JCA)界面, 所以熟Java就可以很快上手. 不熟也沒關係, 看這篇改一改就可以了. 但是和一般資料機密性的問題一樣, 要安全, 就要帶來一些不便. 例如:

  • AmazonS3EncryptionClient還不支援S3 Multipart upload
  • 加密的資訊, 如: symmetric key, EncryptionMaterials 也要和物件一併存起來. 預設是存在這個物件的metadata裡, 所以如果你有寫物件的metadata, 要注意不要超過2KB的限制. 如果有可能超過的話, 就要改用存在另外的物件的方式. (用CryptoStorageMode選擇)
  • 自己的KeyPair, SecretKey要保管好, 不然自己都解不開

加密之後把機密資料放在S3應該可以增加不少信心度, 但是還是回到我常說的, 要加密的資料和不加密的資料一定要分開處理, 可以放不同buckets, 或是用不同object key prefix, 這樣才方便處理.

但是為什麼AWS SDK for Java始終都沒有出CloudFront的支援啦, 那個AWS SDK for .NET明明都有.

Cloudtw 2011-04

| Comments

昨天的CloudTW就在一片歡樂的氣氛中結束了, 大家還欲罷不能, 結束了還一直聊天. 謝謝Jamie熱情贊助場地和披薩飲料, 我走的時還有好多人在熱烈的討論, 讓人覺得未來充滿了希望啊! 讓我不好意思先走啊! 我想當工友來關燈的 ;o 好啦! 以下就是slides, 本來想放幾張無名正妹在裡面的, 因為大部份內容都是code實在太無聊啦! 還是怕被抗議啦, 不過如果你是正妹, 覺得不介意被我放進slides, 可以告訴我啦! ;O

Amazon新功能: Cloud Drive

| Comments

好康又來了

很久沒有寫Amazon的新功能了,趕快來趕上進度一下,這個Cloud Drive又是個好康的東西。所有Amazon使用者都有5GB的免費容量! 可以把在Amazon買的音樂直接放在這裡,然後用Cloud Player播放,還有Android、Mac等播放器,不過這個播放功能目前只有美國才能用。所以在台灣的我們,可以把Cloud Drive當成另一個免費的5GB網路空間啦! Cloud Drive後面當然也是使用Amazon自家的S3,不過Cloud Drive有專門作一個Web UI,比較簡單好用。Cloud Drive也可以昇級,有許多付費等級,20GB一年20美金,而且沒有網路傳輸費,比S3還便宜! AWS新的使用者,S3每個月前5GB是免費的,但剩下的15GB算起來是一年25.2美金(以最便宜的美東地區來計算)。但是S3是無限容量的啦,而且S3可以選「地區」(region),每個物件又可以獨立用API操作,所以彈性還是比較大啦。不過當然還是希望AWS能再降價,過去降好幾次了,應該會再發生!

我一直想著拿著一台iphone或android走在路上搖頭晃腦聽音樂,如果用這個Cloud Drive就很方便啦,不用同步來同步去的。(可惜本人還是使用只能打電話的手機,哈哈!) 看了Amazon,我不禁想到一句:這叫其它廠商怎麼混啊!