fix: 支付宝表单添加 HTML 转义,防止 JSON 双引号破坏属性

This commit is contained in:
2026-05-07 16:27:27 +08:00
parent a588478ab0
commit 05b6520140

View File

@@ -170,17 +170,23 @@ fn build_alipay_form_html(
let sign = rsa2_sign(&sign_source, &config.private_key)?;
// 生成自动提交的表单 HTML使用原始值,浏览器会自动 URL 编码
// 生成自动提交的表单 HTMLHTML 转义防止特殊字符破坏属性
fn h(s: &str) -> String {
s.replace('&', "&")
.replace('"', """)
.replace('<', "&lt;")
.replace('>', "&gt;")
}
let mut form_fields = String::new();
for (k, v) in &params {
form_fields.push_str(&format!(
r#"<input type="hidden" name="{}" value="{}" />"#,
k, v
h(k), h(v)
));
}
form_fields.push_str(&format!(
r#"<input type="hidden" name="sign" value="{}" />"#,
&sign
h(&sign)
));
let html = format!(