2009-12-03 127 views
1

几年前,我在ColdFusion中编写了一个杂志风格的网站。它具有对全文搜索(使用SQL Server)文章和博客帖子的网站搜索功能。它运行良好,但后来我们被SQL注入攻击(我的错误)击中。网站所有者决定取消搜索,直到最近才让我重新开始搜索。网站搜索的安全措施

我知道我需要使用CFQUERYPARAM来停止SQL注入,并且我已经修复了代码的这方面。我的问题是,我应该做些什么来使网站搜索合理安全?我不是在谈论英雄的措施,只是我不应该忘记的基本东西。谢谢。

回答

7
  • cfqueryparam
  • 误差经由<cferror>
  • 逻辑围绕单个查询
  • 错误处理的现场处理,用于限制在给定的时间来从特定IP的请求数
  • 确保数据库用户账号只能访问应该
  • 逻辑确保搜索请求是从您的网站,而不是第三方
  • 搜索结果(使用分页)的
  • 数量限制
  • 限制未来的具体行动搜索输入长度(最大30?)
+3

好的列表。此外,不要忘记有关诸如

0

除了使用参数,可以你可以检查奇怪的文字输入(HTML代码,'标签等...) 限制它的长度(它是合理的搜索将不超过一定数额的char)

搜索网络文本消毒

0

您可以开始避免使用CFQUERYPARAM sql注入。

你应该小心的另一件事是避免拒绝服务atack。 我曾经看到过一个基于向网站发送愚蠢查询的atack,类似于“包含一封信的所有文本”以及这类内容。

限制每页结果的数量是避免这类问题的一个很好的选择。

0

我能想到的是还要检查由搜索结果访问的所有链接(可cffunctions,fuseactions等),要么是安全的是公共或受保护必要的水平,如:

1

只能使用存储过程来更改数据。 将数据库用户帐户限制为只能使用视图(您可以在该视图上拥有只读权限) 将数据源设置为仅允许选择并执行(特效) 始终使用cfqueryparam 将查询放入cfc中并始终使用正确参数类型。 使用输入消毒器检查注射的字符串。

当然#1备份您的数据库或定期!

0

您还可以添加验证码到搜索中,以确保它是人为驱动的。然后,你不会磨损你的服务器或分贝,试图找到自动查询的答案。