Y a-t-il un avantage de security à utiliser une procédure stockée pour basculer une valeur booleanne d'une checkbox?

J'ai une valeur de variable booleanne stockée dans une database SQL Server. Ceci est présenté aux users finaux comme une checkbox sur une page Web ASP.NET. Le basculement de la checkbox met naturellement à jour la valeur dans la database.

J'étais sur le sharepoint supprimer la requête SQL écrite en text brut dans le code C # et de la replace par une procédure stockée afin d'améliorer la security en protégeant contre les attaques par injection SQL. Ma compréhension des attaques par injection est limitée, mais on ne peut sûrement pas triggersr une attaque à partir d'une input de checkbox non sécurisée? Ou pourrait-on?

Eh bien, en règle générale, vous devez toujours utiliser des procédures stockées ou sql paramétré. Pouvez-vous le faire en cliquant sur une checkbox? Vraiment, tout dépend de la façon dont le code est écrit. En surface, je dirais que non, mais il y a un grand nombre de possibilités qui pourraient affecter cela.

Rappelez-vous, la page lors de l'envoi envoie essentiellement une valeur de text au server. Quelqu'un pourrait envoyer une attaque par injection sql au lieu de la valeur checkbox. Maintenant, asp.net est assez bon pour gérer cela, mais cela ne signifie pas que si le code est écrit pour contourner le contrôle asp.net etc. etc., cela ne pourrait pas arriver.

La seule chose que j'ai apprise à propos de la programmation, c'est que chaque fois que je pense, "cela ne peut pas être fait". En général, j'ai tort. Je prends toujours la route la plus sûre en matière de security.

Le risque d'une attaque via l'interface user est plus une menace avec un champ de saisie comme une textbox qu'une checkbox en soi. Il est bon d'être prudent, mais en utilisant procs stocké, et en utilisant une command avec des parameters est un moyen de gérer ce type d'attaque. Ou, si vous utilisez SQL, assurez-vous d'utiliser @parameters pour les valeurs, n'injectez pas les valeurs directement dans la requête.

Le encoding des valeurs aide également à surmonter certains problèmes.

HTH.

ASP.Net vérifie par défaut les valeurs returnnées pour s'assurer qu'il obtient ce qu'il attend. Il entre ensuite la valeur dans YourCheckBox.Checked donc à ce point la valeur returnnée devrait être vrai ou faux. Cela ne veut pas dire que la checkbox est impénétrable – personne ne le dira puisqu'il y a probablement quelqu'un quelque part qui pourrait encore l'utiliser avec malveillance – mais il y a probablement plus de risques de security sur le site que la checkbox. Je passerais votre time à regarder les zones de text, les lists déroulantes et la session. Vous pouvez revenir à la checkbox si vous pensez vraiment que tout le rest est complètement sécurisé.

Bien sûr, si vous utilisez simplement la checkbox HTML, il ne va pas vérifier la valeur de return et est donc less sécurisé. Dans ce cas, je suggère de le changer pour une checkbox asp.net.