添加 HTML 转义,防止邮件内容中的 HTML 注入攻击
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"fmt"
|
||||
"net/smtp"
|
||||
"net/textproto"
|
||||
"html"
|
||||
|
||||
"carrotskin/pkg/config"
|
||||
|
||||
@@ -70,8 +71,6 @@ func (s *Service) send(to []string, subject, body string) error {
|
||||
addr := fmt.Sprintf("%s:%d", s.cfg.SMTPHost, s.cfg.SMTPPort)
|
||||
|
||||
// 判断端口决定发送方式
|
||||
// 465端口使用SSL/TLS(隐式TLS)
|
||||
// 587端口使用STARTTLS(显式TLS)
|
||||
var err error
|
||||
if s.cfg.SMTPPort == 465 {
|
||||
// 使用SSL/TLS连接(适用于465端口)
|
||||
@@ -132,6 +131,10 @@ func (s *Service) getBody(code, purpose string) string {
|
||||
message = "您的验证码为:"
|
||||
}
|
||||
|
||||
// 转义 HTML 特殊字符
|
||||
escapedMessage := html.EscapeString(message)
|
||||
escapedCode := html.EscapeString(code)
|
||||
|
||||
return fmt.Sprintf(`
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
@@ -158,5 +161,5 @@ func (s *Service) getBody(code, purpose string) string {
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
`, message, code)
|
||||
`, escapedMessage, escapedCode)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user