零点博客复盘:C#编程实战开发在线正则工具,深扒SQL注入防护与MySQL预处理语句
最近在整理零点博客的技术库,想做一个通用的在线工具,特别是针对前端常用的正则表达式测试。正好这几天在啃C#编程的高级特性,索性就用 .NET Core 搭了个后端,顺便把之前在爬虫开发里没讲透的JSON/XML数据解析、SQL注入防护以及MySQL预处理语句整理出来。
1. 项目背景与需求分析
这次的需求很明确:前端用 HTML/CSS/JS 实现一个简洁的输入框,后端用 C# 处理正则匹配。虽然 PHP(如 EMLOG 系统)也能做,但这次我特意选用了 C# 来写后端接口,主要为了演示如何进行更底层的控制。
2. 核心功能实现:从 SQL 到 C# 的预处理
很多新手容易忽略的一点是:即便是在写测试接口,也必须考虑安全。为了演示 SQL注入防护,我设计了这样一个场景——如果我们要把这个正则规则存入数据库,绝不能直接拼接字符串。
// 错误示范(严禁使用)
string query = "SELECT * FROM rules WHERE pattern = '" + userRegex + "'";
// 正确示范:使用 MySqlCommand 的 Parameters 属性
string sql = "INSERT INTO regex_rules (pattern, description) VALUES (@pattern, @desc)";
using (MySqlCommand cmd = new MySqlCommand(sql, connection))
{
// 这里绑定的方式能有效防止 SQL 注入攻击
cmd.Parameters.AddWithValue("@pattern", userRegex);
cmd.Parameters.AddWithValue("@desc", "User Generated");
cmd.ExecuteNonQuery();
}
看到没?这就是 C#编程 的严谨之处。通过参数化查询,无论前端传入什么脏数据,到了 MySQL 层面都会被当作纯文本处理,从而杜绝了数据库被黑客劫持的风险。
3. 数据交互:JSON 与正则引擎的结合
工具跑通后,我们需要把匹配结果返回给前端。后端使用 Newtonsoft.Json 库将对象序列化为 JSON 字符串。这里涉及到了数据结构的设计:
var result = new
{
IsMatch = regex.IsMatch(inputString),
MatchGroups = regex.Matches(inputString).Cast<Match>().ToList()
};
return JsonConvert.SerializeObject(result);
这步操作本质上就是将服务器端的运算结果,通过 接口开发 的形式,通过 JSON 格式无损地传输给 HTML/CSS/JS 前端。前端接收到 JSON 后,用 JS 渲染到页面上。
4. 实战避坑指南与总结
在开发过程中,我踩了不少坑:
- 正则回溯: 写复杂的 正则表达式 时,要小心“死循环”,导致程序假死。
- 编码问题: 处理中文字符串时,要确保数据库连接字符串设置了字符集,否则可能会出现乱码。
- EMLOG 下的后端脚本: 如果你是在类似的 CMS 系统下部署,记得将脚本放在独立的控制器或 API 目录下,不要污染原有的路由。
总的来说,通过这个“在线正则工具”的案例,我们串联起了从 MySQL 连接、SQL 语句安全编写、JSON 数据解析到 C# 后端逻辑处理的完整闭环。这就是我在零点博客想传递给读者的:代码不仅要跑得通,更要写得安全、优雅。



评论一下吧
取消回复