В моем приложении обнаружена угроза безопасности, которую я не знаю, как исправить.Я только что узнал об этом, когда проверял HTML и играл с ним.
Итак, у меня есть этот код в теге формы
<%= form_tag("/spree/admin/workorders/#{@workorder.id}
/?workflow_id=#{workflow.id}
&name=workstep_name_{workflow.product_workstep.workstep.name}
&workstep_id=#{workflow.product_workstep.workstep.id}", method: "put")do%>
, который запрашивает параметрыбудет пойман этим методом.
def update
@incoming_status = params[params[:name]]
# grab workflow, this is current data, use this to compare status to in comming status
@workflow = get_workorder_product_workstep(params[:workflow_id])
if is_workstep_for_shipping?
if @workorder.order.shipment_state.downcase == "shipped"
update_workflow
else
flash[:notice] = "Product not yet shipped"
end
else
update_workflow
end
redirect_to admin_workorder_path(@workorder)
end
def update_workflow
# check current status if its pending allow to update
if @workflow.send("can_#{@incoming_status}?")
# update status
@workflow.send(@incoming_status.to_s)
# updated attribute handled_by
@workflow.update_attributes(handled_by_id: @curr_user.id)
@workflow.save
else
flash[:notice] = 'Action not allowed'
end
end
и в браузере форма, созданная в представлении, будет отображать это.
<form action="/spree/admin/workorders/45/?workflow_id=141&name=workstep_name_w4&workstep_id=61" accept-charset="UTF-8" method="post">
</form>
теперь эта форма, эти запросыЗначение параметров может быть изменено.Попытка ввода неправильного значения, и мой бэкэнд упалкак это исправить?Любая идея или статья, которую я мог прочитать?спасибо.
ОБНОВЛЕНИЕ
Во время игры по сети.Я также нашел это на вкладке сети request payload
{spree_user: {email: "-----, password: "---"}}
spree_user: {email: "----", password: "----"}
все текстовое.Я просто изменил свой адрес электронной почты и пароль на ----
Если человек с техническим опытом может легко это заметить.
Код с производства.Я думаю, что мы не используем JWT здесь.