在服务器端识别客户端浏览器中的内容更改

问题描述:

我在html字段中存储了一些数据以用于显示目的。 当我通过检查元素更改该字段的值时,它也会在服务器端进行更改。在服务器端识别客户端浏览器中的内容更改

由于项目需求,我无法对此类字段使用服务器端验证。

场与实际值: -

<input type = "text" name = "field1" id = "field1" value = "1234" readonly> 

值变化后检查元素: -

<input type = "text" name = "field1" id = "field1" value = "56" readonly> 

禁用检查元素不是一个很好的解决方案。我总是想获得服务器端这些字段的实际值。 如果价值有任何变化,我可以确定客户已更改数据。 请帮我解决这类问题。

+1

当我通过检查元素更改该字段的值时,它也会在服务器端进行更改。怎么可能? – anu

+1

客户端总是可以修改DOM - 这是完全浪费时间来试图阻止发生的事情。这会更好地利用时间来使服务器代码更健壮,以便在服务器上验证您希望具有特定值的任何值。 –

+0

我想说你需要某种形式的服务器端验证才能防弹。 – Arg0n

readonly元素只是不可编辑的,但是当相应的表单提交时会被发送。 禁用的元素不可编辑,并且在提交时不发送。

所以你必须使用'禁用'而不是'只读'。 如果需要,您可以直接从服务器端获取值。

感谢

,你应该避免自己变成一个情况下,你需要信任的客户端。通常情况下,DOM总是可以修改的,并且您发送的表单的内容可以由客户端定制,并且无法用纯HTML来阻止。

如果值有任何变化,我可以识别出客户端已经更改了数据。请帮我解决这类问题。

换句话说,您想验证您发送到服务器的某些值。一般来说,你需要做到以下几点:

  • 确定谁您信任定义这些值的演员(无论是客户端,目标服务器或一些其他组件等)
  • 提供这些行动者方法来验证您定义后不想操作的值。这将需要一个秘密。例如,您可能想看看数字签名。
  • 构建一个机制来验证这些值在目的地的真实性。例如,让您的服务器验证来自浏览器的数据值的签名。

如果谁在定义这些值的演员是你的目标服务器(同一个演员的验证)并将这些值是安全的关键,应该没有理由把他们送到摆在首位客户 - 或者,如果读取访问没问题,至少没有客户端将值发送回服务器。

如果您的源和目标是不同的参与者,并且您需要在它们之间建立信任关系,则消息认证会进入画面。

无论如何,针对您的问题的解决方案远不止HTML或客户端JavaScript。