前言:在零点博客折腾后端开发的心路历程

最近在零点博客上折腾了不少功能,发现很多做前端的童鞋对接口返回的 JSON 数据处理起来很头疼。为了提升开发效率,我决定基于 C# 写一个纯前端的在线 JSON 格式化工具,顺便在后端搞点硬核动作,比如正则校验和 SQL 防护。

这次主要聚焦于 后端开发 中的数据解析与安全控制,结合 EMLOG 的部署场景,把干货给大家拆解开来。

技术选型与架构设计

整体逻辑很简单:HTML/CSS/JS 负责界面交互,C# Web API 负责业务逻辑。既然是工具类产品,数据的准确性和安全性是核心。

  • 后端框架:ASP.NET Core
  • 数据库:MySQL(用于记录用户使用日志)
  • 数据解析:Newtonsoft.Json
  • 安全防护:参数化查询

核心功能实现:数据解析与清洗

用户提交一段乱糟糟的字符串,我们需要通过正则表达式过滤掉非法字符,再转为对象。在 C# 中,使用 JObject.Parse 是最稳妥的。

public dynamic FormatJson(string rawJson)
{
    // 1. 使用正则表达式剔除可能的 XSS 攻击脚本标签
    string cleanJson = Regex.Replace(rawJson, "<[^>]+>|(&#x|&#x)[0-9a-fA-F]+;?", string.Empty);

    try
    {
        var jObj = JObject.Parse(cleanJson);
        return new { success = true, data = jObj, message = "格式化成功" };
    }
    catch (Exception ex)
    {
        return new { success = false, data = null, message = "JSON 格式有误:" + ex.Message };
    }
}

避坑指南:SQL 注入防护与预处理语句

很多时候我们在后端开发时,会把用户的操作记录到 MySQL。千万别直接拼接字符串!我是直接跑过血的教训,今天就拿这次工具的开发日志举例子。

错误的写法(禁止): string sql = "INSERT INTO logs VALUES ('" + userId + "')";

正确的写法(预处理):

public void SaveLog(int userId, string toolName)
{
    string sql = "INSERT INTO usage_logs (user_id, tool, create_time) VALUES (@uid, @tool, @time)";

    using (var conn = new MySqlConnection(connectionString))
    {
        using (var cmd = new MySqlCommand(sql, conn))
        {
            // 参数化查询,彻底杜绝 SQL 注入
            cmd.Parameters.AddWithValue("@uid", userId);
            cmd.Parameters.AddWithValue("@tool", toolName);
            cmd.Parameters.AddWithValue("@time", DateTime.Now);

            conn.Open();
            cmd.ExecuteNonQuery();
        }
    }
}

前端交互与接口调用

前端部分主要用原生 JS。拿到后端返回的 JSON 数据后,我会做一套前端校验。如果你需要开发爬虫抓取数据,前端的 fetch 或 axios 也是非常重要的数据传输手段。

async function submitJson() {
    const response = await fetch('/api/json/format', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ content: document.getElementById('input').value })
    });
    const result = await response.json();
    if (result.success) {
        renderResult(result.data);
    }
}

总结与部署建议

这次在零点博客贴出的这套 C# 后端开发 案例,涵盖了从 接口开发、JSON 解析 到 SQL 防护 的全流程。无论你是用 PHP 还是 C# 做后端,预处理语句和正则校验这俩老兄弟都得用起来。

如果你在部署时遇到跨域(CORS)问题,记得在 Program.cs 里配置 AddCors。源码部分我已经封装好,大家可以直接在 EMLOG 模板或者独立页面中调用接口。