提问人:djeetee 提问时间:5/7/2020 更新时间:5/7/2020 访问量:736
如何防止客户端代码中的表单黑客攻击
How to prevent form hacking in client-side code
问:
这是一个普遍的问题,而不是我在代码方面遇到的一个具体问题。这个问题出现了,讨论了使用VueJS等框架的利弊,并在客户端上执行表单验证,而不是将数据提交到控制器进行数据验证的服务器。
他的论点是,由于代码(即JS代码)和数据驻留在客户端上,因此总是有可能有人篡改数据/代码,然后将数据提交到服务器,从而绕过验证。我是 VueJS 的新手,来自 PHP + CodeIgniter,想听听你对这个主题的看法。
这个论点的有效性如何?
谢谢
答:
2赞
Joseph Sible-Reinstate Monica
5/7/2020
#1
是的,恶意用户可以篡改客户端代码并删除所有安全和验证检查。试图阻止他们是浪费时间和精力。相反,将所有此类检查移出客户端代码并移入服务器端代码。
评论
0赞
Phil
5/7/2020
同时进行客户端和服务器端验证没有错
0赞
Joseph Sible-Reinstate Monica
5/7/2020
@Phil我想说的是,它有一点问题:如果你忘记了服务器端的验证检查,你的测试人员可能不会注意到客户端上是否有这样的检查。
1赞
A. L
5/7/2020
@JosephSible-恢复莫妮卡,这不是争论的焦点。注意“两者”这个词
0赞
Joseph Sible-Reinstate Monica
5/7/2020
@A.Lau 我的观点是,如果你的策略是两者兼而有之,而你忘记了服务器端的策略,你可能在测试中不会注意到,但如果你的策略是只有服务器端的,而你忘记了它,你更有可能在测试中注意到。
2赞
A. L
5/7/2020
你的论点从字面上看毫无意义。测试并非专门针对服务器或客户端。您可以为两者编写测试。编写客户端验证是为了确保用户不会提交表单,然后收到“拒绝”错误,因为未正确设置必需或特定格式。这就像您可以在信用卡字段中输入字母或超过 16 位数字一样。客户端不是安全性,而是便利性。
1赞
Jackson
5/7/2020
#2
有效性如何?非常有效。
客户端验证非常容易绕过。这就是为什么您甚至需要在服务器端检查输入的原因。
话虽如此,出于多种原因,客户端验证仍然有用。例如,如果您的密码必须是字母数字,则需要先在客户端进行检查。仅仅因为您的密码要求太难达到,您的服务器就遇到瓶颈并不好玩。从本质上讲,如果没有客户端验证,每次有人输入的密码强度较低时,它都会进入您的服务器,然后返回,这是延迟和不必要的网络流量。
话虽如此,您仍然应该在服务器端验证它们是否为字母数字。
下一个:reactJs 安全存储
评论