fix: 支付宝表单添加 HTML 转义,防止 JSON 双引号破坏属性
This commit is contained in:
@@ -170,17 +170,23 @@ fn build_alipay_form_html(
|
||||
|
||||
let sign = rsa2_sign(&sign_source, &config.private_key)?;
|
||||
|
||||
// 生成自动提交的表单 HTML(使用原始值,浏览器会自动 URL 编码)
|
||||
// 生成自动提交的表单 HTML(HTML 转义防止特殊字符破坏属性)
|
||||
fn h(s: &str) -> String {
|
||||
s.replace('&', "&")
|
||||
.replace('"', """)
|
||||
.replace('<', "<")
|
||||
.replace('>', ">")
|
||||
}
|
||||
let mut form_fields = String::new();
|
||||
for (k, v) in ¶ms {
|
||||
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!(
|
||||
|
||||
Reference in New Issue
Block a user