正確的做法是爲不需要任何用戶註冊或驗證的網站訂購表格。該表單有三種模式:Order,OrderImage,Print。訂單表單有許多OrderImage,而OrderImage有許多印刷品。沒有驗證的安全Rails 3 MultiStep訂單表格的最佳方法
用戶需要能夠上傳圖像(OrderImage)與他們的訂單,並且還能夠在確認並提交訂單之前返回並編輯每個OrderImage。
形式是多級和由四個階段組成:
- 上傳圖片
- 審查上傳
- 您的詳細
- 確認上傳
這是好的,一切都按照計劃進行工作,並在用戶輸入更多詳細信息或上傳mo時將數據存儲到整個Order流程的數據庫中重新圖像。
但是,這意味着存在URL,例如「/ upload?order = 5」,這是不好的。由於沒有身份驗證,這意味着任何人都可能猜測訂單的URL並更改它。
所以我只是想知道管理這個過程的最佳方式是什麼?我有一對夫婦的心中的想法,但不知道是否任何人都對這個問題的最佳解決方案:
生成6位數字,例如內的隨機順序號這樣的URL會更喜歡:「/ upload?order = 645029」。這會導致有人猜測訂單號的機會減少,但實際上還不是很安全。
將上述想法與訂單狀態相結合,如「完成」。所以當一個訂單最終提交時,它被標記爲完整。然後,我可以防止再次訪問任何「完成」訂單。然而,在訂單流程中,訂單號仍然可能被猜測和篡改。
使用會話並將訂單號存儲在此處而不是存儲在URL中,或作爲表單中的隱藏值。
我看過Ryan Bates的Railscast在Multistep窗體中存儲數據的過程。然而,瑞恩自己承認以這種方式存儲複雜的模型和對象是不實際的。
因此,有關處理未經驗證的訂單表單的最佳方式的任何建議將非常感謝,謝謝。
順便說一句,如果你使用這個例子,小心類型。 'params [:id]'很可能是一個字符串,'session [:current_order_id]'可能是一個字符串或整數。 – David