[問題] 保護購物車系統的資料

看板toberich作者 (werewolf)時間11年前 (2013/01/26 02:04), 編輯推噓6(602)
留言8則, 7人參與, 最新討論串1/2 (看更多)
首先 雖然我自己是資工系畢業 但是不表示我在資工上面的想法一定正確 這都還是可以討論的 希望可以引發大家的討論 從中思考與學習 ========= 實務上來說 對不大會寫程式的人 最安全的作法 個人認為反而是買購物架站的程式 為什麼?因為多人用的程式 安全性修改越快 而且不容易犯下一些明顯的錯誤 (像是直接把密碼存在資料庫裡面... 我真是看過不知道多少人搞過) 至於有些人擔心的 不是常常有這些套件出錯上新聞的事情發生嗎? 我的認知如下: 去王品吃東西吃到拉肚子是個新聞 自己煮東西吃到拉肚子 還不很值得上新聞哩 ==================== 以下解釋一般討論此區塊時 安全性的作法 基本原則如下 1. 檢查所有使用者輸入進來的資料 使用者輸入的資料 都要被視為是不安全的 他會不會在該是密碼的地方寫點程式碼 結果你的資料就抓光光了? 還是他一丟超長字串進來 你的網頁就死當了? 認真想想你的密碼應該限制是多少 (很愚蠢的也沒關係 像是限制1 ~ 1000字之間 電腦有可能出現比你想像更愚蠢的事情 例如 沒有密碼也可以 結果會員一點錯就被盜用了) 2. 密碼不要使用明文存取 請不要傻傻的要求你的程設做 「當會員失去密碼時 申請把密碼寄回給會員信箱」的功能 這不難做 只是你的資料庫要嘛存的是密碼明文 要嘛存的是很容易逆向出來的加密 而這一些當你的資料庫被盜用的時候 都是巨大的問題 (假設你的會員喜歡連銀行帳戶都用同樣的密碼 那你的麻煩就更大了) 正確的作法 一直都是(概念上) 存密碼的hash 例如說sha1之類的 (聽說這也不夠安全了 我可能還要找一下資料 但是這種不安全 都比起存明文安全的多) 至於有人提過所謂字典檔攻擊 這意思如下 hash的概念是 即使這函數你看不出輸入跟輸出的關係 但是如果你丟進去的東西相同 他一定會跑一樣的輸出 所以你的使用者帳密 aa:1234 的話 資料庫是存aa:sha1(1234) 這樣就安全多了 因為sha1(1234) 推不回去1234 不過想攻擊的人 可以做個方法 就是跑sha1 做各種可能的密碼 與他sha的對照表 這樣的話如果他剛好跑過1234 就能比對出密碼了 一般解決這問題的方法是前後加點文字 既然使用者都亂用密碼 那我幫你前後加上固定字串 也就是說 使用者帳密 aa:1234 資料庫存aa:sha1(asdf1234asdf) 當使用者登入的時候 程式比對時前後加上asdf就好了 這樣 即使攻擊者拿到sha1(asdf1234asdf) 他也很可能沒想過跑這個密碼 所以無法破解 這個的比較專業說法是加上salt 有點像是加點鹽的感覺XD ============ 對已經瞭解程設的人 大家可以討論看看 我喜歡的作法如下: USER_NAME: 做sha1(USER_NAME + USER_PASS + SALT) 然後這段字串重複(加salt > sha1)的步驟 rand(USER_NAME) % 3次 (如果覺得做rand花時間 可以做一次之後就存進DB裡面) 以上 供參考XD -- 色如聚沫 一切有為法 如夢幻泡影 受如水泡 想如陽燄 如露亦如電 應作如是觀 - 《金剛經》 行如芭蕉 是故空中無色 無受想行識 - 《心經》 識如幻事 - 《雜阿含經 歡迎加入佛教板Buddhism漢傳實修板Learn_buddha -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.225.141 ※ 編輯: flamerecca 來自: 114.36.225.141 (01/26 02:05)

01/26 02:33, , 1F
喔喔之前fb半夜戰密碼那篇有去簽到厚
01/26 02:33, 1F
沒耶 該死的當天睡著了 回來只能看截圖 不勝唏噓

01/26 02:51, , 2F
密碼用明文其實還算是小問題.....
01/26 02:51, 2F

01/26 02:52, , 3F
sql injection之類的比較恐怖....
01/26 02:52, 3F
因為防這個比較單純 所有使用者輸入都檢查一下 看看有沒有躲程式碼就好了 上面板友所提到那個竟然可以昇華成錯誤觀念 (認為密碼用明文存 使用者問就寄回去 這樣沒有比較不安全..) 比較讓我感覺恐怖 ※ 編輯: flamerecca 來自: 114.25.201.30 (01/26 06:22)

01/26 11:38, , 4F
BCrypt
01/26 11:38, 4F

01/27 22:14, , 5F
謝謝您開文討論^^
01/27 22:14, 5F

01/28 01:07, , 6F
推推
01/28 01:07, 6F

01/28 19:38, , 7F
其實拿的到SHA1 有很大機會對方已經讀到你資料表的RAW DATA
01/28 19:38, 7F

02/03 00:54, , 8F
推BCrypt
02/03 00:54, 8F
文章代碼(AID): #1H0iaONd (toberich)
文章代碼(AID): #1H0iaONd (toberich)