我有一个简单的问题是涉及在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通常提供的答案的确定性(例如,我相信这个社区不仅仅是一些谷歌搜索,我保证我发布之前已经尝试过)。
感谢您的帮助!
+1 for OWASP - 我不知道它存在,更不用说存在了11年。 –
@ xelco52这是很好的建议,谢谢。并感谢网站,虽然我不知道去哪里获取资源来保护我的应用程序,但它似乎是一个足智多谋的网站。你是否熟悉WebMatrix?我不知道它有多彻底,因为它的验证'看起来'真的很好(例如,它不允许任何通过尖括号括起来的任何东西)。这还不够吗? (XSS的确如你所说,似乎是一个棘手的野兽,所以不确定) – VoidKing
无论你使用哪种数据库解决方案,值得注意的是攻击者在试图在数据库中坚持XSS攻击时有一个非常大的兵工厂。不同的字符集,编码,空间等等。最终,您应该主动防止XSS感知您正在使用用户提供的数据并将其保存在数据库中,以及何时将数据从数据库中提取出来以显示给用户。我会更新一般的OWASP链接,指向“OWASP Top 10”:) – xelco52