[.NET] sql injectie warning doorgeven naar aanroepende func

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Heren (en wellicht dames)

Ik heb een probleem.
In mijn drang tot perfectie ben ik bezig om de microsoft set met fxcop rules over mijn projectje heen te jagen.

Nu gaat dit vrij goed, maar ik kom deze warning tegen:
MSDN: CA2100: Review SQL queries for security vulnerabilities

Nu komt komt dat voor in de volgende code:
C#:
1
2
3
4
5
6
7
8
9
10
11
public string CommandText
{
    get
    {
        return Command.CommandText;
    }
    set
    {
        Command.CommandText = value;
    }
}


Nu wil ik eigenlijk dat ik niet een warning krijg op dit stukje code, want dat is onderdeel van een framework, maar ik wil graag dat bij het gebruik van het framework de warning krijg als ik deze methode aanroep.
Hoe krijg ik dat voor elkaar?
Lees: hoe zorg ik dat wanneer ik zeg:
mijnObject.CommandText = 'woei' + param.ToString();
ik een fxcop warning krijg?

[ Voor 3% gewijzigd door BasieP op 08-09-2014 17:33 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dus je wil wel een melding krijgen als je eigen code dat doet maar niet als andermans frameworkcode dat doet?

Kun je dan niet beter in je eigen code een class afleiden van deze class waarin je de property overridet en alleen in die setter een warning gooien? Je eigen code werkt dan verder niet anders dan nu en je kan aan third party code gewoon je eigen class doorgeven waar die parentclass verwacht wordt.

[ Voor 22% gewijzigd door NMe op 08-09-2014 18:02 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
NMe schreef op maandag 08 september 2014 @ 18:00:
Dus je wil wel een melding krijgen als je eigen code dat doet maar niet als andermans frameworkcode dat doet?

Kun je dan niet beter in je eigen code een class afleiden van deze class waarin je de property overridet en alleen in die setter een warning gooien? Je eigen code werkt dan verder niet anders dan nu en je kan aan third party code gewoon je eigen class doorgeven waar die parentclass verwacht wordt.
Nee niet helemaal.

Ik heb een Command object in mijn eigen class (de class waarin ik de warning krijg). En daar heb ik deze get/set constructie in.

Echter is die class een doorgeefluikje. Dus deze class is zelf niet verantwoordelijk voor de potentiele SQL injectie.
Echter wanneer ik de setter van deze class aanroep (zowel vanuit mijn eigen code als als een derde partij dat doet) dan wil ik dat die warning verschijnt.

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Of je specifiek een FXCop-melding kan krijgen weet ik niet, maar je kan toch zelf naar het build log schrijven vanuit je setter?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
NMe schreef op maandag 08 september 2014 @ 18:25:
Of je specifiek een FXCop-melding kan krijgen weet ik niet, maar je kan toch zelf naar het build log schrijven vanuit je setter?
Ja dat doe ik ook wel, maar ik wil idd een fxcop melding.
De Oracle client of de MySQL client doen dat ook op de een of andere manier. Anders weet FxCop natuurlijk niet dat ie daar die warning moet gooien..
Dus het zou wel moeten kunnen denk ik

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Volgens je eigen link doen ze dat door MSDN: IDbCommand Interface (System.Data) te implementeren.

Jouw eigen klasse lijkt me een beetje een gek extra laagje ten opzichte van deze bestaande interface, afhankelijk van wat je aan het doen bent.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
pedorus schreef op maandag 08 september 2014 @ 22:02:
Volgens je eigen link doen ze dat door MSDN: IDbCommand Interface (System.Data) te implementeren.

Jouw eigen klasse lijkt me een beetje een gek extra laagje ten opzichte van deze bestaande interface, afhankelijk van wat je aan het doen bent.
ja klopt het laagje is wat vreemd ;)

Ik ga eens kijken of implementeren van die System.Data interfaces werkt.

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Laurens-R
  • Registratie: December 2002
  • Laatst online: 29-12-2024
Even los van dit alles blijft de FxCop warning gewoon valide. Ook je nieuwe implementatie is gevoelig voor SQL injection bij CommandText; of je daar nou direct of indirect van gebruik maakt. Als je weet dat je gebruik maakt van parameters etc om injection te voorkomen, kan je de warning evt. supressen. Maar feitelijk is de warning van FxCop nog steeds valide.

@Woy hieronder: Ach tuurlijk! je hebt helemaal gelijk. Je wilt deze warning natuurlijk geven op het moment dat je de nieuwe property gebruikt en niet alleen op dit enkele punt... 8)7

[ Voor 20% gewijzigd door Laurens-R op 09-09-2014 10:14 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Laurens-R schreef op dinsdag 09 september 2014 @ 10:05:
Even los van dit alles blijft de FxCop warning gewoon valide. Ook je nieuwe implementatie is gevoelig voor SQL injection bij CommandText; of je daar nou direct of indirect van gebruik maakt. Als je weet dat je gebruik maakt van parameters etc om injection te voorkomen, kan je de warning evt. supressen. Maar feitelijk is de warning van FxCop nog steeds valide.
De melding is logisch, maar niet zozeer op de plek waar je dat zou willen. Je kunt het in ieder geval oplossen door de melding te supressen, en een eigen rule maken die controleert op het gebruik van je eigen Property.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1