首页业界

云OA,安全为先,SQL注入漏洞 - 引发的思考
出自 paioa.com  2020-1-18

本文章原由一篇阿里云安全公告:
泛微e-cology OA系统 validate.jsp 前台SQL注入漏洞
泛微e-cology OA 数据库配置信息泄漏漏洞

华天动力OA系统存SQL注射漏洞可获取数据库内信息
华天动力OA系统弱口令加任意文件上传,分秒钟沦陷服务器
华天动力OA任意文件下载漏洞(两处)

(1)SQL注入漏洞
SQL 注射漏洞产生原因是程序代码使用 "SQL语句拼接传递参数"。
Java、PHP 搭配 MySQL,经常发生 SQL 注入漏洞,因为 Java、PHP 使用 "SQL语句拼接传递参数"。


(2)PaiOA 程序代码 100% 使用 C# SqlParameter 安全传递 SQL 参数。永远不会有 SQL 注射漏洞。
C# 和 .NET Framework 开发平台、SQL Server 数据库,同属微软公司。
18年前,微软发布 C# 和 .NET Framework 1.0,设计了 C# SqlParameter 语法安全传递 SQL 参数。

笔者用 C# 写段常见的用户登录代码。前端界面如下图:

C# 代码如下:
笔者使用  C#  SqlParameter 传递 SQL 参数,无论在用户名中输入任何非法字符,试图构建 SQL 注射都是徒劳。
实际上这种调用 SQL 语句的方式源自 SQL Server 存储过程,@UserId、@Password 类似存储过程参数。

string strUserId = txtUserId.Value;
string strPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Value, "SHA1");

SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
conn.Open();

SqlParameter[] param = new SqlParameter[2];
param[0] = new SqlParameter("@UserId", strUserId);
param[1] = new SqlParameter("@Password", strPassword);

string commandText = "SELECT * FROM [dbo].[Users] WHERE [UserId] = @UserId and [Password] = @Password";
SqlCommand cmd = new SqlCommand(commandText, conn);
cmd.Parameters.AddRange(param);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
     Response.Write("登录成功!");
reader.Close();
conn.Close();

 出处:https://www.paioa.com/tech/p/cloud-security.htm
「版权声明:本站原创文章,未经授权,不得转载」


首页  -  博客  -  服务条款  -  用户中心  -  联系我们

© PaiOA 2020 派胜科技 保留一切权利。