3

我最近在搞乱一个 django 本地服务器项目,我有一个像这样的输入

<form....{% csrf_token %}
....
<input type="text" value="foo" readonly />
....
</form>

现在输入的值应该保持我想要的方式(“foo”),但是我使用了谷歌浏览器检查并且能够更改只读输入的值并将新值传递给服务器,从而保存了错误价值。

所以我有几个问题:

  1. 防止此类安全风险的一般规则或心理检查表是什么?

  2. 我可以使用 JavaScript 控制台并像这样损坏数据吗?更新:是的。

  3. 那么我基本上必须在服务器端进行所有检查吗?

  4. 如果不是 3,那么受 html/js 检查器保护的客户端验证是什么?

编辑:

我从到目前为止的答案中猜测,3 是肯定的。所以我还应该为客户端安全/检查而烦恼吗?他们真的会让我更安全还是只是一种虚假的安全感(这很糟糕)?我是否应该进行客户端检查以可能在服务器端保存一些检查,这样我的性能可能会更好? 基本上:我应该做多少客户端检查?

4

4 回答 4

2

为了安全起见,您不能在客户端回复 Javascript 或任何内容。只要确保您的服务器是安全的。

例如,您可以 telnet 到端口并将适当的数据发送到服务器。这将通过Javascript(或任何其他技术(在客户端)阻止和检查。

只需使用 Javascript 即可让用户在客户端上的体验更愉快、响应速度更快。请勿将其用于安全性。

于 2013-03-08T13:42:35.640 回答
1
  1. 永远不要相信用户发送的数据(cookie、会话、HTTP 请求中的参数……)。用户发送的所有数据都可以修改。

  2. 是的当然

  3. 它还有待完成。

于 2013-03-08T13:43:59.380 回答
1

问问自己为什么首先需要那个只读值。据推测,当用户第一次请求表单时,是您的代码生成了它。那么,当用户请求表单时,您的代码可以使用哪些表单,而当用户提交表单时该表单不可用?不应该有任何东西,这应该使您得出这样的结论,即该字段可以在提交时轻松生成,而根本不需要出现在表单中。

于 2013-03-08T13:54:34.400 回答
1

您的服务器代码必须是最终权威,它根本不能依赖客户端所做的验证质量。查看所有客户端,无论是 HTML 还是其他容易受到狡猾用户和错误编码人员影响的客户端。

于 2013-03-08T13:41:07.607 回答