- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如果禁用的下拉列表动态呈现到页面,仍然可以使用 Firebug 或其他工具来篡改提交的值,并删除“禁用”的 HTML 属性。这段代码:
protected override void OnLoad(EventArgs e) {
var ddlTest = new DropDownList() {ID="ddlTest", Enabled = false};
ddlTest.Items.AddRange(new [] { new ListItem("Please select", ""), new ListItem("test 1", "1"), new ListItem("test 2", "2") });
Controls.Add(ddlTest);
}
呈现此 HTML 的结果:
<select disabled="disabled" id="Properties_ddlTest" name="Properties$ddlTest">
<option value="" selected="selected">Please select</option>
<option value="1">test 1</option>
<option value="2">test 2</option>
</select>
当我使用 Firebug 删除“禁用”属性并更改所选选项时出现问题。
在提交表单和重新创建字段时,新生成的控件在 OnLoad 结束时具有正确的值,但在 OnPreRender 中,它已假定已提交控件的身份并已被赋予已提交的表单值。
.NET 似乎无法检测到该字段最初是在禁用状态下创建的并且提交的值是伪造的。这是可以理解的,因为可能存在允许删除禁用属性的合法客户端功能。
除了蛮力方法之外,是否有其他方法可以检测到该字段的值不应该被更改?
我认为蛮力方法是一些废话,比如在 OnLoad 中的某个地方保存正确的值,然后在 OnPreRender 中恢复值。由于某些领域依赖于其他领域,这对我来说是 Not Acceptable 。
最佳答案
如果这确实是一个问题,则在服务器某处(可能在 session 中)保留一个值,该值指示该控件在页面的初始呈现时被设置为禁用。如果当页面回发时控件未处于禁用状态,那么您就知道表单已被篡改。
这可以防止客户端篡改,因为表单永远不会提交禁用的控件,因此修改后的数据永远不会到达服务器。请看http://w3.org/TR/html401/interact/forms.html#h-17.12 .
关于c# - 在 .NET 中,如何防止或处理在提交前篡改禁用字段的表单数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2582879/
大家好,我是沙漠尽头的狼。 本文首发于 Dotnet9 ,介绍使用 Lib.Harmony 库拦截第三方 .NET 库方法,达到不修改其源码并能实现修改方法逻辑、预期行为的效果,并
我有Helm Applciations使用 Terraform 的 helm_release 资源与 Terraform 一起部署。 有时由于以下一个或多个原因,我的 Kubernetes Pod 将
我有Helm Applciations使用 Terraform 的 helm_release 资源与 Terraform 一起部署。 有时由于以下一个或多个原因,我的 Kubernetes Pod 将
我们开发了一个 Javascript 文件供客户使用。 Javascript 片段对其运行的网站进行屏幕截图,然后通过 jQuery.post() 将其发送回我们的服务器 我们行业的性质意味着我们必须
我在本地主机上运行我的测试站点。 当我用 URL 加载它时: localhost/projects/forums/index.php 它看起来像这样(符合预期) 但是当 我给 URL: localho
我正在 中共同开发一个简单的网络应用程序 rails 3.0.9 我已经意识到可能通过恶意请求篡改 session_id。请注意,这是我的第一个 RoR 应用程序,所以我的概念可能完全错误。 当前的应
我返回了以下 JSON 数据,但由于某种原因,Javascript 或 jQuery ajax 似乎重新组织了项目列表。服务器返回按item.title字母顺序排序的数据(已验证)... 下面的 JS
背景 我是一名经验丰富的 Web 开发人员(主要使用 Python 和 CherryPy),之前从头开始实现过安全 session 管理,现在正在学习 Rails。我正在调查 session 暴露的
我正在使用 MVC3、.NET4.5、C#、Razor。 我在 Codeproject 之外重用了 Albin 的一些非常有用的代码,通过添加哈希来防止 URL 篡改。主要运行良好。 然而…… 我现在
我是一名优秀的程序员,十分优秀!