2012-10-10 55 views
2

我有一个简单的问题是涉及在WebMatrix的剃刀安全性(C#)paramaterizing后WebMatrix的SQL注入和XSS担忧查询

我(的时间非常短暂的时期)使用字符检查,以帮助验证形式作战考虑SQL注入,但是,意识到参数化查询后是打击最好的办法,因为我已经注释掉此项检查它看起来是这样的:

foreach(char c in POIName) 
    { 
     if(c=='\'' || c=='$' || c=='\"' || c=='&' || c=='%' || c=='@' || c=='-' || c=='<' || c=='>') 
     { 
      errorMessage = "You have entered at least one invalid character in the \"POI Name\" field. Invalid characters are: [\'], [\"], [&], [$], [@], [-], [<], [>], and [%]"; 
     } 
    } 

现在,我的问题是这样的: 我应该删除线像完全一样,因为它们不是必需的(为了让用户在文本中有最大的自由度eas等)或者是否仍然需要对WebMatrix进行特定的字符检查(或者对于这个问题不是特定的)。

也许不允许“@”或“;”或“<”或“>”??

从我理解的参数化查询(我有)自动逃脱有害字符和重新包装整个事情作为一个字符串(或类似的东西,无论如何,哈哈),我的数据库已经证明不受任何我注意到了SQL注入攻击。

我想我很担心,因为我不确定剃须刀是否会受到某种影响,或者我应该担心XSS(不,我不是一个博客或任何应该接受html标签甚至任何类型的尖括号的东西) 。

对不起,如果这个问题到处都有,但我不知道还有什么地方可以找到Stack Overflow通常提供的答案的确定性(例如,我相信这个社区不仅仅是一些谷歌搜索,我保证我发布之前已经尝试过)。

感谢您的帮助!

回答

4

好的,这里有两点。您正在讨论参与“黑名单”以清除用户输入。更好的方法是“White Listing”。定义允许的字符是什么。攻击者可以通过多种方式创造性地避开快速构建的黑名单。其他XSS是一个棘手的野兽。编码和白名单可以用来对付它。我会建议看看Microsofts Ant-XSS Library的建议。但通常情况下,您将希望使用适合您尝试保护的页面部分的编码。

总之,我可以给你的最好的建议是熟悉OWASP,特别是OWASP Top 10。这是保护您的应用程序的绝佳资源。

+0

+1 for OWASP - 我不知道它存在,更不用说存在了11年。 –

+0

@ xelco52这是很好的建议,谢谢。并感谢网站,虽然我不知道去哪里获取资源来保护我的应用程序,但它似乎是一个足智多谋的网站。你是否熟悉WebMatrix?我不知道它有多彻底,因为它的验证'看起来'真的很好(例如,它不允许任何通过尖括号括起来的任何东西)。这还不够吗? (XSS的确如你所说,似乎是一个棘手的野兽,所以不确定) – VoidKing

+0

无论你使用哪种数据库解决方案,值得注意的是攻击者在试图在数据库中坚持XSS攻击时有一个非常大的兵工厂。不同的字符集,编码,空间等等。最终,您应该主动防止XSS感知您正在使用用户提供的数据并将其保存在数据库中,以及何时将数据从数据库中提取出来以显示给用户。我会更新一般的OWASP链接,指向“OWASP Top 10”:) – xelco52