【发布时间】:2021-06-15 20:56:18
【问题描述】:
我正在尝试帮助一名开发人员尝试强化网络服务器以防止服务器端请求伪造。简而言之,我编写了一个脚本,它发送一个“伪造的”HTTP 请求,我们将使用该请求对服务器进行测试,直到它被配置为不响应此类操纵的请求。我在 Invoke-WebRequest 上遇到错误:“无法验证参数‘Uri’上的参数”,虽然我尝试了以下代码的大量不同组合,但我无法让它飞起来。有什么想法吗? (注意:下面的 my-ef.example.com 不是实际主机)
#requires -Version 5
#requires -PSEdition Desktop
class TrustAllCertsPolicy : System.Net.ICertificatePolicy {
[bool] CheckValidationResult([System.Net.ServicePoint] $a,
[System.Security.Cryptography.X509Certificates.X509Certificate] $b,
[System.Net.WebRequest] $c,
[int] $d) {
return $true
}
}
[System.Net.ServicePointManager]::CertificatePolicy = [TrustAllCertsPolicy]::new()
$Params = @{
Uri = 'http://192.168.1.119'
Host = 'my-ef.example.com'
Method = 'GET'
Headers = @{"Cache-Control" = "no-cache, no-transform"; "Connection" = "close"; "Pragma" = "no-cache"}
}
Invoke-WebRequest -Method 'POST' -Uri $url
上面的代码总是抛出错误:
Invoke-WebRequest:无法验证参数“Uri”上的参数。这 参数为空或空。提供一个不为空的参数或 为空,然后重试该命令。
【问题讨论】: