【问题标题】:Tweaking my search functionality调整我的搜索功能
【发布时间】:2011-01-09 02:11:06
【问题描述】:

我已经测试了我在实时网站上实现的搜索功能。我遇到了一些小问题。我不能在搜索框中输入特殊字符,否则我的应用程序会崩溃。 我试图在它崩溃的字符上使用一些替换来解决这个问题,但这并不能治愈痛苦。 当我在搜索框中输入这个符号:* 时,它给了我以下错误:

无法解析 ' echo;': '' 或 '?'不允许作为 WildcardQuery 中的第一个字符。我之前遇到过这个错误,然后去掉了所有单词之间的空格。然后错误消失了。但是,当我现在将 this: * 替换为 this: "" 时,我将收到上述错误。 有什么标准方法可以解决特殊字符问题吗? 我会在这里写下我的一些代码,以便获得更好的反馈。

Analyzer analyzer = new StandardAnalyzer();
QueryParser qpContent = new QueryParser(Index.ContentFieldName, analyzer);
keyword.Trim();

keyword = keyword.Replace("\"", "");
keyword = keyword.Replace("^", "");
keyword = keyword.Replace("*", "");

Query queryContent = qpContent.Parse(keyword + "*");              
QueryParser qpLanguage = new QueryParser("language", analyzer);
Query queryLanguage = qpLanguage.Parse(Sitecore.Context.Language.Name.ToString());

如您所见,我首先替换 *,然后将其添加回查询解析器。我不是 100% 熟悉这种功能,因此根本不知道我做错了什么。非常感谢所有帮助,谢谢!

【问题讨论】:

  • 您遇到的问题(SQL 注入漏洞)不在您发布的代码中。还请发布您如何查询数据库(例如,您如何构建查询)。
  • Alex,我现在已经解决了。感谢您的回复 :)。

标签: c# .net database search


【解决方案1】:

您可能在配置中设置了 ValidateRequest 选项,这有助于防止 asp.net 中的注入攻击。

一些细节可以在这里找到...

http://msdn.microsoft.com/en-us/library/bb355989.aspx

http://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.validaterequest.aspx

还有……

http://en.wikipedia.org/wiki/Code_injection

http://en.wikipedia.org/wiki/SQL_injection

【讨论】:

  • 我已经阅读了上面Alex的评论并重新阅读了你的问题,我认为他可能有一点,我的回答是指asp页面中的注入攻击保护被触发,你的问题可能是由于sql注入攻击保护被触发。
  • 感谢您回答我的问题,完全解决了:)。我阅读了上面的链接,对我来说效果很好!
  • 酷,当你将代码发布到大坏世界时,请注意不要关闭保护:S
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多