所以在我的例子中,在用戶選擇了某個房間、他將入住的晚數和客人數量、價格被計算出來(取決于某些因素)然后他們被重定向到他們將看到的付款頁面總價,用戶可以通過操縱 url 中的 price 引數來更改總價。
在預訂頁面上:
<Link to={"/book?pricetotal=" total_prices "&title=" title "&img=" img "&price=" price "&checkin=" checkkin "&checkout=" checkkout "&idr=" idroom} >
在我正在使用的支付頁面上
const windowUrl = window.location.search;
const params = new URLSearchParams(windowUrl);
然后我得到引數使用
params.get('price')
我找到的解決方案是對 Url 引數的內容進行加密,然后對其進行解密。該解決方案是否足夠有效,或者是否有其他方法可以實施?
uj5u.com熱心網友回復:
客戶端上的任何東西都可能被足夠感興趣的人攔截和操縱。如果您真的擔心安全性,加密可能還不夠,因為用戶可以檢查生成鏈接的代碼,并可能對其進行逆向工程。
您不能相信在客戶端上所做的任何事情。相反,當用戶做出選擇時:
用戶選擇某個房間后,他將入住的夜數和客人的數量
保存此資料server-side,如果用戶還沒有會話 ID,則為他們提供會話 ID。然后,當他們需要結帳時,您可以計算服務器端的總數,然后以某種方式將其顯示給用戶。是的,不要把它放在 URL 引數中,因為這太容易讓別人搞砸,即使是無意的 - 但是把它放在,例如,回應獲取請求,或者頁面上的資料元素中會起作用。
當用戶輸入他們的付款資訊并提交時,使用他們的會話 ID 來確定他們選擇的價格是多少。使用這種方法,即使有人決定弄亂客戶端腳本以顯示其他內容,它也不會影響最終價格 - 他們只會弄亂他們的視圖(如果他們這樣做,會導致任何混亂在他們身上)。
uj5u.com熱心網友回復:
那是行不通的,因為您在前端進行加密和解密。
一個可行的解決方案是發送產品而不是產品的價格。然后,當您向后端發送付款請求時,也發送產品,并在后端計算向用戶收取多少費用。
uj5u.com熱心網友回復:
我的解決方案是在鏈接 react-router 中傳遞道具
<Link to={{pathname:`/book`,state: { total_prices,title,img,price,checkkin,checkkout,idroom },}} >
并在我的其他功能組件中使用
const location = useLocation()
console.log(location.state)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/458944.html
標籤:javascript 反应 网址 参数 变量赋值
上一篇:ReactRouterv6Link組件不會更改根url的頁面
下一篇:如何使URL列中的鏈接可點擊
