【发布时间】:2010-09-14 09:26:32
【问题描述】:
我认为它们可以,但由于我没有把钱放在嘴边(可以这么说),因此设置 readonly 属性实际上似乎没有任何作用。
我宁愿不使用禁用,因为我希望选中的复选框与表单的其余部分一起提交,我只是不希望客户能够在某些情况下更改它们。
【问题讨论】:
-
(恶意)客户端始终可以更改复选框的值(或发送任意请求)。始终确保进行正确的服务器端验证!
-
@knittl 但是普通访客没有(恶意)客户。而一个普通的Vistor不想改变一个信息(那是
readonly的意思) -
@knittl 你似乎忽略了
readonly的全部意义!为什么会存在这个属性! -
@IzharAazmi:
readonly只是一个客户端属性,可帮助浏览器正确呈现站点,然后从中构造正确的请求。服务器不能也不应该知道渲染页面的readonly属性。它必须假设请求来自任何地方(并且可能带有恶意);永远不要依赖用户提供的输入。不过,为什么要在请求中发送您无法编辑的复选框值(如果您在渲染之前设置了该值,那么您在提交请求时已经知道该值,因此无需在请求中传输它) -
@knittl 我同意!但是您会看到
readonly属性由于某种原因存在那里。它当然与服务器端实现无关。但它可以告诉用户“嘿!这里假设了这个值,和/但你不能改变这个。”