只读文本框的服务器验证-防止输入值
本文关键字:输入 验证 文本 服务器 只读 | 更新日期: 2023-09-27 18:16:35
我在mvc应用程序中有一个文本框,标记为只读(使用JavaScript)。但是,如果用户知道JavaScript,他可以按F12并执行$("#AmountBox").prop('readonly', false);
并在文本框中输入一些值,然后单击Submit按钮并更改数据库中的Amount值。如何防止用户在只读或禁用的文本框中输入值?有没有办法做一些服务器验证?
您可以通过在接受POST的控制器操作中添加黑名单(或白名单)来防止重叠。
[HttpPost]
public ActionResult Edit([Bind(Exclude = "AmountBox")] SomeClass model)
{
//
}
如果您确实需要只读值,但不希望更改它,我认为您必须:
A)在将表单数据发送到浏览器之前将值保存在服务器上,并在发布时进行比较(有几种方法可以做到这一点)或
B)如果可以,仅在发布时获取适当的值,并且根本不需要将其发送给客户端。
根据您在评论中的描述,您只希望此Amount-data在之前为零时从客户端发送到服务器。否则金额就直接显示出来了。因此,为了检查来自客户机的被操纵的数据,服务器需要检查数据库中是否没有数量值,并拒绝或忽略在这种情况下发送的任何数量数据。比如
public void onDataReceived(Data data)
{
if(db.GetAmountOfUserFromDB(data.userID) != null && data.AmountBox != null)
{
//just ignore the data.AmountBox value here or react with a message like "It is not allowed to change the amount"
}
else
{
//add data.AmountBox to db or whatever
}
}