Skip to content

Commit b01ad8a

Browse files
committed
move headers to array
1 parent 5416e00 commit b01ad8a

File tree

1 file changed

+34
-31
lines changed

1 file changed

+34
-31
lines changed

src/ngx_http_security_headers_module.c

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,6 @@
2727
#define NGX_HTTP_RP_HEADER_STRICT_ORIG_WHEN_CROSS 7
2828
#define NGX_HTTP_RP_HEADER_UNSAFE_URL 8
2929

30-
/* ngx_hide_header macros */
31-
#define ngx_hide_header(r, name) \
32-
ngx_str_set(&key, name); \
33-
ngx_str_set(&val, ""); \
34-
ngx_set_headers_out_by_search(r, &key, &val);
35-
36-
3730
typedef struct {
3831
ngx_flag_t enable;
3932
ngx_flag_t hide_server_tokens;
@@ -48,6 +41,35 @@ typedef struct {
4841

4942
} ngx_http_security_headers_loc_conf_t;
5043

44+
static ngx_str_t empty_val = ngx_string("");
45+
46+
static ngx_str_t hide_headers[] = {
47+
ngx_string("x-powered-by"),
48+
ngx_string("x-cf-powered-by"),
49+
ngx_string("via"),
50+
ngx_string("x-amz-cf-id"),
51+
ngx_string("x-amz-cf-pop"),
52+
ngx_string("x-page-speed"),
53+
ngx_string("x-varnish"),
54+
ngx_string("x-cache"),
55+
ngx_string("x-cache-hits"),
56+
ngx_string("x-cache-status"),
57+
ngx_string("x-application-version"),
58+
ngx_string("x-hudson"),
59+
ngx_string("x-hudson-theme"),
60+
ngx_string("x-instance-identity"),
61+
ngx_string("x-jenkins"),
62+
ngx_string("x-jenkins-session"),
63+
ngx_string("x-envoy-upstream-service-time"),
64+
ngx_string("x-drupal-cache"),
65+
ngx_string("x-generator"),
66+
ngx_string("x-backend-server"),
67+
ngx_string("x-wix-request-id"),
68+
ngx_string("x-request-id"),
69+
ngx_string("x-sucuri-id"),
70+
ngx_string("x-hacker")
71+
};
72+
5173
static ngx_conf_enum_t ngx_http_xss_protection[] = {
5274
{ ngx_string("off"), NGX_HTTP_XSS_HEADER_OFF },
5375
{ ngx_string("on"), NGX_HTTP_XSS_HEADER_ON },
@@ -229,30 +251,11 @@ ngx_http_security_headers_filter(ngx_http_request_t *r)
229251
}
230252
h_server->hash = 0;
231253

232-
ngx_hide_header(r, "x-powered-by");
233-
ngx_hide_header(r, "x-cf-powered-by");
234-
ngx_hide_header(r, "via");
235-
ngx_hide_header(r, "x-amz-cf-id");
236-
ngx_hide_header(r, "x-amz-cf-pop");
237-
ngx_hide_header(r, "x-page-speed");
238-
ngx_hide_header(r, "x-varnish");
239-
ngx_hide_header(r, "x-cache");
240-
ngx_hide_header(r, "x-cache-hits");
241-
ngx_hide_header(r, "x-cache-status");
242-
ngx_hide_header(r, "x-application-version");
243-
ngx_hide_header(r, "x-hudson");
244-
ngx_hide_header(r, "x-hudson-theme");
245-
ngx_hide_header(r, "x-instance-identity");
246-
ngx_hide_header(r, "x-jenkins");
247-
ngx_hide_header(r, "x-jenkins-session");
248-
ngx_hide_header(r, "x-envoy-upstream-service-time");
249-
ngx_hide_header(r, "x-drupal-cache");
250-
ngx_hide_header(r, "x-generator");
251-
ngx_hide_header(r, "x-backend-server");
252-
ngx_hide_header(r, "x-wix-request-id");
253-
ngx_hide_header(r, "x-request-id");
254-
ngx_hide_header(r, "x-sucuri-id");
255-
ngx_hide_header(r, "x-hacker");
254+
size_t hide_headers_count = sizeof(hide_headers) / sizeof(hide_headers[0]);
255+
256+
for (size_t i = 0; i < hide_headers_count; ++i) {
257+
ngx_set_headers_out_by_search(r, &hide_headers[i], &empty_val);
258+
}
256259
}
257260

258261
if (1 != slcf->enable) {

0 commit comments

Comments
 (0)