c# - Sharepoint 数据库安全 - SQL 注入(inject)

标签 c# asp.net sql sharepoint

我已经为 SharePoint 开发了一个自定义 Web 部件,我担心它的安全性。 Web 部件本质上是一个测验框架,首先让用户“注册”;他们只需输入姓名和电子邮件地址。对于成功的测验,结果被记录在一个列表中,那些注册变量直接放入列表中。

我应该担心 SQL 注入(inject)攻击吗?数据在添加到列表之前是否被 SharePoint 转义?或者,SharePoint 是否将命名参数与准备好的语句一起使用?或者,它只是逐字记录吗?

感谢您的任何见解。

更新

也许我应该换一种说法,我正在将代码插入到 SharePoint 列表中,因此它不会“直接”进入数据库。当一个项目被插入到一个列表中并且(我假设)插入到某个数据库表中时,我不确定发生的过程(特别是关于安全性)。这是我正在使用的一些代码:

通过标准的HTML输入获取用户输入

 output.Write("<div>Please enter your e-mail address</div><div><input type=\"text\" value=\"\" size=\"30\" name=\"takerEmail\"></div>");

这里是插入数据的方式

            using (SPSite siteSuccessWrite = new SPSite("http://www.mycompany.com"))
            {
                using (SPWeb webSuccessWrite = siteSuccessWrite.OpenWeb())
                {
                    SPList insertResults = webSuccessWrite.Lists[resultsList];
                    SPListItem quizEntry = insertResults.Items.Add();

                    quizEntry["firstName"] = firstName;
                    quizEntry["lastName"] = lastName;
                    quizEntry["email"] = email;
                    quizEntry["phone"] = phone;
                    quizEntry["department"] = dept;
                    quizEntry["score"] = score;

                    quizEntry.Update();
                }
            }

最佳答案

使用对象模型时,您不必担心 SQL 注入(inject),因为 Sharepoint 会为您处理(它在内部使用参数化存储过程)。

不过,在向用户/法官显示测验结果时,您确实需要担心 XSS 之类的问题,因为未转义的 HTML 可以轻松调用 SharePoint Web 服务/客户端对象模型并在当前用户的上下文中执行操作.

关于c# - Sharepoint 数据库安全 - SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332493/

相关文章:

C# - 需要基类上的接口(interface),但只需要派生类中的实现

c# - LINQ 替换表创建中的 foreach

c# - 在类型上找不到匹配的构造函数

c# - 如何在 ASP.NET MVC 中有效地提供图像

mysql - MySQL 中何时使用单引号、双引号和反引号

c# - DesignOnly 属性不会在运行时隐藏属性

c# - 减去日期并在数据库的不同列中保存值

c# - 更新面板 asp.net - 页面刷新

mysql - 将串联值插入表中

sql - 类似 QueryDSL 的 SimplePath 操作