WAF URL截断逻辑分析:out_url缺少省略号的原因

以下代码片段展示了一个WAF中截断URL的逻辑:

int i = 0;
int out_len = 0;

if (url_len > WAF_WL_LOG_MAX) {
	for (i = 1; i < 4; i++) {
		if (is_utf8_chinese_start(url[WAF_WL_LOG_MAX-i])) {
			out_len = WAF_WL_LOG_MAX-i-1;
			strlcpy(out_url, url, out_len-3);
			strcat(out_url, "...");
			WAF_DBG("\nurl 1, url : [%s]
", out_url);
			goto err;
		}
	}

	out_len = WAF_WL_LOG_MAX;
	strlcpy(out_url, url, out_len-3);
	strcat(out_url, "...");
	WAF_DBG("\nurl 2, url : [%s]
", out_url);
	goto err;
}

out_len = WAF_WL_LOG_MAX;
strlcpy(out_url, url, out_len);

err:
WAF_DBG("\nurl for log, url : [%s]
", out_url);
return 0;

out_url输出没有省略号内容的原因可能是:

  • url_len小于等于WAF_WL_LOG_MAX:当url_len小于等于WAF_WL_LOG_MAX时,代码不会进入if语句块中的逻辑,而是直接执行下面的代码,将完整的url复制到out_url中。因此,out_url中并没有省略号。

总结: 该代码逻辑用于截断超过WAF_WL_LOG_MAX长度的URL,并添加省略号。如果URL长度未超过限制,则不会进行截断,out_url将包含完整的URL内容。

建议:

  • 在使用该代码时,应确保url_len的值已正确获取,并根据实际情况调整WAF_WL_LOG_MAX的取值。
  • 可以考虑在代码中添加判断,明确标识出截断操作是否执行,以便于调试和维护。
WAF URL截断逻辑分析:out_url缺少省略号的原因

原文地址: https://www.cveoy.top/t/topic/nf4v 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录