在本节中,我们将看到应该在哪里执行应用程序安全性。
客户端安全
开发人员常见的误解是在客户端执行安全检查,例如在JavaScript中。JavaScript验证电话号码示例!
1、首先用户将输入电话号码:
2、JavaScript代码将检查值:
3、这值似乎是正确的:
4、该值将被发送到服务器:
5、如果电话号码格式不正确,浏览器将不会发送请求:
6、JavaScript将检查值:
该请求不会被发送到服务器。
这些类型的检查效率低下,很容易绕过,不应该用作安全机制。但是,这些检查可以通过限制处理请求的数量来减少服务器上的负载。如果每个客户端的信息在发送前都是正确的,则会发送更少的不正确请求,这会降低服务器的负载。
绕过客户端检查
要绕过客户端检查,您需要设置一个像Burp Suite一样的代理服务器。一旦运行代理,您需要通知您的浏览器通过此代理发送请求(通过根据您的浏览器和操作系统更改其配置或环境变量)。然后,您将看到浏览器发送的请求,并能够拦截并篡改它们。
通过在浏览器中使用正确的值,表单被提交。然而,代理然后用于修改值并开始攻击Web应用程序:
服务器端
应用程序的安全性应该在服务器端执行。所有收到的信息都不应该被信任; 数据本身或数据格式应被视为恶意。不要指望一个参数是一个字符串; 它可以是散列或数组。不要指望一个参数是一个整数; 它可以是一个字符串。即使当前服务器的主机名(由Host标头提供)也可能是恶意的。不要相信任何事情,并确保你仔细检查一切。如果你构建了一个弱应用程序,很可能有人会发现某些东西。
不要指望人们不知道某件事情; 如果你构建的东西很薄弱,很可能有人会发现。