刚刚在一个";n〃;网上商店。这个错误可能会更改html代码(多亏了inspect元素(,并使早期不可用的拾取点可用。因此,我可以订购一些东西,付款,甚至可以得到订单的确认。我的问题是,业主如何才能阻止这样的事情发生?
附言:在订购过程中,我只在一个网页上,在付款之前,没有重定向到另一个页面或刷新当前页面。
p.s.s.只是想提一提,我在这些";魔术;事情。所以也许你可以向我推荐书籍/网页等,在那里我可以阅读更多关于";服务器响应";。
正如您所发现的,编辑网站的HTML代码和/或修改发送到浏览器或从浏览器发送的数据确实不太困难。这是浏览器设计和工作方式的一部分,所以你必须处理这种";黑客攻击";在服务器端。
以下是在设置服务器和后端应用程序时需要记住的一个非常肤浅(但并不完整(的事项列表:
-
来自外部("客户端"(的每个请求都可能是恶意的或被篡改的 。→确保使用服务器端验证";一切";。这可能指:
- 输入字段(长度、值、格式…(
- 数据格式(例如正确的JSON/XML结构(
- 用户身份验证和授权
- 您的业务规则(正如我所认为的,这是您的示例中的决定性规则——可能其他所有规则都是有效的,但服务器端没有检查您注入的拾取点的可用性(
-
因此,切勿仅依赖客户端验证(通常为JavaScript/TypeScript(!你可以使用它来获得更好的用户体验,但真正的";硬";验证必须在服务器端进行。
-
根据站点的关键性和相关数据的可信度,考虑通过使用Web应用程序防火墙(WAF(、速率限制、日志爬网和其他技术来识别和阻止可疑流量,从而增加更多安全性。
-
保持您的服务器软件(操作系统及其所有库等、应用程序服务器(如Apache/Nginx/WildFly/…(和您的网站所包含的软件(如Spring/PHP/Angular/…应用程序((是最新的。有像可靠这样的方法和手段可以帮助您实现这一过程的自动化。过时的软件和库可能有一些已知的漏洞,攻击者可以利用这些漏洞。
-
尽量使用标准软件、框架和机制。现代Web框架,如Spring Boot、Laravel。。。维护良好,安全问题及早发现并解决。此外,已经内置了验证和欺诈检测方法,您只需要利用它们。另一方面,如果你试图编写自己的授权框架(例如(,你很可能会忽略一些东西,留下安全漏洞。