我想丢弃所有查询参数并添加一个新的(例如 DN=$ssl_client_s_dn)。原因是为了防止客户端发送此查询参数。
替换查询参数“DN”的值对我来说也是一个有效的解决方案。
我的配置文件是
server {
listen 9999 ssl default_server;
listen [::]:9999 ssl default_server;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /keystores/mycert.crt.pem; ##
ssl_certificate_key /keystores/mycert.key.pem; ##
ssl_client_certificate /keystores/.npm.certs.pem; ## CA Bundle
ssl_verify_client on;
root /home/edu/my-react-app;
index index.html;
server_name _;
location / {
try_files $uri $uri/ /index.html =404;
}
location = /login {
if ($arg_DN = "") {
rewrite ^ /login?DN=$ssl_client_s_dn redirect;
}
try_files /index.html =404;
}
}
我想使用“DN”查询参数作为登录系统。但客户端可以通过发送属于具有更高权限的用户的虚假 DN 来欺骗我!
任何想法?
答案1
如果您想始终用作$ssl_client_s_dn
参数,则使用:
location = /login {
rewrite ^ /login?DN=$ssl_client_s_dn last;
}
您当前的解决方案仅在没有DN
参数时才适用。
但是,什么让你认为客户端无法模仿该DN
领域呢?