php - 假设如果 $_SERVER ['SERVER_ADDR' ] === $_SERVER ['REMOTE_ADDR' ] 是服务器发出请求,那么安全性如何?

标签 php security ip-address

好吧,问题说明了一切,我想知道,这样的比较有多安全:

if ($_SERVER['SERVER_ADDR'] === $_SERVER['REMOTE_ADDR']) {
    // yeah, it's the server, go ahead do this.
}

我问这个问题的原因是为了识别一些来自服务器本身的 Web API 调用。

我知道 $_SERVER['REMOTE_ADDR'] 可以被欺骗来运行请求,但不能从中获取结果。如果是这种情况,例如在谈论 Rest 时,对于 GET 请求来说这不会产生问题,但是对于 DELETE 请求又如何,因为不需要解析服务器的响应。
如果上述说法正确,是否意味着您不应该相信后面提到的比较?
有哪些替代方案(让我们从这里排除 CLI)?

最佳答案

最好的解决方案是使用安全密码。

只要您的检查只允许正确的密码,您就不必担心伪造的 IP 地址或其他可能的不安全检查。

if ($_GET['password'] === 'my_password') {
    // code
}

考虑使用secure compare function以避免定时攻击。

关于php - 假设如果 $_SERVER ['SERVER_ADDR' ] === $_SERVER ['REMOTE_ADDR' ] 是服务器发出请求,那么安全性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17256189/

相关文章:

php - 来自 Abraham 的 TwitterOAuth - 无法验证您的身份;错误: 32

security - 将 sha512 编码器与 symfony2 in_memory 安全提供程序一起使用

flutter - 从真正的移动浏览器访问 flutter localhost

php - 列的 SUM 不起作用,只打印 0

php - 如何定义一个定义常量的php配置文件并在项目中的任何地方使用它

c# - 阻止 ASP.NET 中的整数溢出

c++ - 使用 Win32 网络 API 根据计算机名称获取本地计算机的 IP 地址

ios - 使用 SWIFT 检查 IP 地址可达性

php - php(mysql)中的FIFO计算

java - rmi ejb 调用中可重用登录 session 的概念