c# asp.net sql sharepoint

c# - Sharepoint Database Security-Inyección de SQL



asp.net (2)

Al usar el modelo de objetos, no tendrá que preocuparse por la inyección de SQL, ya que Sharepoint maneja eso por usted (usa procedimientos almacenados parametrizados internamente).

Sin embargo, TIENE que preocuparse por XSS y los gustos cuando muestra los resultados del cuestionario al usuario / juez, ya que el HTML no protegido puede llamar fácilmente al servicio web de SharePoint / Modelo de objetos del cliente y hacer cosas en el contexto del usuario actual.

Desarrollé un elemento web personalizado para SharePoint, y me preocupa su seguridad. El elemento web es esencialmente un marco de prueba que comienza con un ''registro'' de usuario; simplemente ingresan su nombre y dirección de correo electrónico. Para las pruebas exitosas, el resultado se registra en una lista, y esas variables de registro se colocan directamente en la lista.

¿Debería preocuparme por los ataques de inyección SQL? ¿SharePoint escapó los datos antes de que se agreguen a la lista? ¿O usa SharePoint parámetros con una declaración preparada? Alternativamente, ¿simplemente va en forma literal?

Gracias por cualquier idea.

ACTUALIZAR

Tal vez debería volver a expresar que estoy insertando código en una lista de SharePoint, por lo que no va ''directamente'' a la base de datos. No estoy seguro del proceso que tiene lugar (específicamente en relación con la seguridad) cuando un elemento se inserta en una lista y (estoy asumiendo) en una tabla de base de datos en alguna parte. Aquí hay algunos de los códigos que estoy usando:

Obtenga la entrada del usuario a través de la entrada HTML estándar

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

Aquí es cómo se insertan los datos

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(); } }


¿Estás escribiendo el SQL tú mismo? De lo contrario, lo probaría realizando algunos ataques de inyección SQL. Intente ingresar datos como John Smith'' -- en un campo de nombre y vea si la comilla y los guiones terminan en la base de datos. Si no lo hacen (o no obtiene ningún tipo de datos), puede haber una vulnerabilidad de inyección SQL. (Tenga en cuenta que esta no es una prueba exhaustiva, así que no confíe en ella)

Supongo que SharePoint contiene protección contra la inyección de SQL, de lo contrario, cada segundo sitio del gobierno y de la gran empresa estaría terminado. (Pensándolo bien, descarte eso :)

Para ataques Cross-Site Scripting, intente algunos de los siguientes: http://ha.ckers.org/xss.html