技术笔记:零点博客C#对接EMLOG实战,JSON解析与SQL防护避坑指南
最近在零点博客折腾技术栈迁移时,遇到了一个棘手的问题:如何将老旧的 PHP EMLOG 博客系统通过 API 安全、高效地对接到全新的 .NET C# 后端?这不仅仅是简单的接口开发,更涉及到底层数据的安全处理。作为博主,我复盘了整个开发过程,今天就把这些干货毫无保留地分享出来。
一、 为什么选择 C# 对接 EMLOG?
虽然 PHP 后端也能跑,但在处理高并发爬虫开发和复杂的接口开发时,C# 的性能优势明显。我们打算保留 EMLOG 的数据源,通过抓取其 JSON/XML 数据,解析后存入我们的 MySQL 数据库。
二、 JSON/XML 数据解析:不做“小黑盒”
最开始的方案是直接在 C# 里写正则去切字符串,这非常不优雅,而且容错率低。后来我引入了 Newtonsoft.Json 库,效率直接提升了一个档次。
在零点博客的代码里,我封装了一个简单的解析器。例如解析 EMLOG 的 RSS 订阅源:
using Newtonsoft.Json.Linq;
public List<BlogArticle> ParseEmlogJson(string jsonContent)
{
var articles = new List<BlogArticle>();
var obj = JObject.Parse(jsonContent);
// 遍历文章列表,注意字段名必须和 EMLOG 数据库表结构一致
foreach (var item in obj["articles"])
{
articles.Add(new BlogArticle
{
Title = item["title"].ToString(),
Content = item["content"].ToString(),
PostTime = item["date"].ToString()
});
}
return articles;
}
在这个过程中,HTML/CSS/JS 前端展示部分也很重要,当接口返回了清洗后的 JSON 数据,前端只需要通过 AJAX 请求,就能轻松实现无刷新加载文章列表。
三、 深度避坑:SQL注入防护与预处理语句
这是做后端开发最核心的原则。哪怕是在爬虫开发中抓取到的数据,写入数据库前也必须经过过滤。
很多初学者喜欢直接拼接 SQL,这在百度和必应的 SEO 搜索规则中,代码示例是不被推荐的,且存在巨大安全风险。在重构我们的存储过程时,我统一使用了 预处理语句:
using (SqlCommand cmd = new SqlCommand("INSERT INTO articles (title, content) VALUES (@title, @content)", conn))
{
// 关键点:使用参数化查询,自动转义特殊字符
cmd.Parameters.AddWithValue("@title", title);
cmd.Parameters.AddWithValue("@content", content);
cmd.ExecuteNonQuery();
}
这不仅仅是防 SQL 注入,还能让数据库解析器提前优化执行计划,查询速度更快。
四、 正则表达式实战:文本清洗利器
在处理用户评论或从 HTML 中提取链接时,正则表达式是神器。为了配合前端 CSS 样式,我需要从文章内容中提取所有图片的 URL。
string htmlContent = "...文章HTML代码...";
string imgRegexPattern = <<["'].*?>]]>;
Regex imgRegex = new Regex(imgRegexPattern, RegexOptions.IgnoreCase);
MatchCollection matches = imgRegex.Matches(htmlContent);
foreach (Match match in matches)
{
string imgUrl = match.Groups[1].Value;
// 将提取的图片 URL 注入到我们的 MySQL 库中,用于前端懒加载展示
}
五、 结语
从零点博客的起步到现在,我深刻体会到,无论技术如何迭代,SQL注入防护和数据解析的严谨性永远是基础。希望这篇关于 C# 与 EMLOG 结合的技术笔记,能帮到正在做在线工具开发或博客开发的你。如果觉得有用,欢迎收藏,我们下期继续深挖底层原理。



评论一下吧
取消回复