是否可以在下拉列表中注入值?

信息安全 Web应用程序 注射
2021-08-17 22:03:17

比如说一个 ASP.NET 页面,或者任何 html 页面,都有一个包含一堆价格的下拉列表。在发布页面时,代码会查看下拉列表的选择以进行计算。是否有人可以在服务器不知道页面已被篡改的情况下更改值并发布页面?

更新

有人告诉我 ASP.NET 确实通过Page.EnableEventValidation Property提供了一些保护。启用此功能(默认启用)后,尝试更改 ASP 控件的值将导致错误:

无效的回发或回调参数。使用配置或页面中的 <%@ Page EnableEventValidation="true" %> 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。

4个回答

下拉列表是一个 HTML/UI 结构。HTTP 中没有任何这样的概念,这是客户端和服务器最终相互通信的方式。

因此,虽然是的,但客户端可以更改页面,但这不是绝对必需的,因为实际上并不需要页面。最后,客户端只需将 HTTP 请求发送回服务器,其中包含一些数据,这些数据可以是输入到 HTML 表单中的值,也可以是用户随意选择的任意值。

底线是,你不能相信 input客户端发送的任何内容都应该是可疑的,不能保证它是您所期望的,并且必须在接受之前在服务器上进行验证。

简单地说,是的,它可以做到。用户下载 HTML,修改内容,然后发送带有修改内容的 from。

确保您在所有表单数据到达您的数据库之前对其进行验证。根据您的 Web 框架,通常有一种方法可以将选项限制在您指定的范围内。

如果您在客户端上安装代理,例如 Paros,您可以很容易地捕获来自浏览器的响应,然后再将其发送到服务器并编辑任何值 - 包括从下拉表单元素中选择的选项。一旦您看到这是多么容易,您就可以轻松想象如何以各种编程方式执行此操作 - 包括如果您的浏览器受到攻击时在浏览器中添加插件。

防止这种情况绝对唯一方法是检查该值到达服务器后是否有效,即该值是否有效。

这适用于发送到服务器的所有数据、表单数据、URL GET 路径数据,甚至是标题。

基于浏览器/客户端的安全性根本不是安全性。

如果您使用的是 Google Chrome,只需右键单击并检查元素...。然后转到该特定选择标签,右键单击并“编辑为 html”以添加新选项。