多年前,我在ColdFusion编写了一个杂志式网站。它具有网站搜索功能,可以全文搜索(使用SQL Server)文章和博客文章。它工作正常,但后来我们遇到了SQL注入攻击(我的错)。网站所有者决定取消搜索,最近才让我重新开始搜索。
我知道我需要使用CFQUERYPARAM来停止SQL注入,并且我已经修复了代码的这个方面。我的问题是,我应该做些什么来使网站搜索合理安全?我不是在谈论英雄的措施,只是我不应该忘记的基本内容。感谢。
答案 0 :(得分:7)
<cferror>
答案 1 :(得分:1)
仅使用存储过程来更改数据。 将数据库用户帐户限制为只能使用视图(您可以在其上拥有只读权限。) 将数据源设置为仅允许select和execute(procs) 始终使用cfqueryparam 在cfc中放置查询并始终使用正确的参数类型。 使用输入消毒剂检查注射用品。
当然#1备份您的数据库或定期备份!
答案 2 :(得分:0)
除了使用params之外,您还可以检查输入是否有奇怪的文本(html代码,'标签等...) 限制它的长度(搜索不会超过一定数量的字符是合理的)
在网上搜索文本清理
答案 3 :(得分:0)
您可以使用CFQUERYPARAM开始避免sql注入。
您应该注意的另一件事是避免拒绝服务atack。 我曾经看过一个基于向网站发送愚蠢查询的东西,比如“包含一封信的所有文本”和这类东西。
限制每页的结果数量是避免此类问题的良好替代方案。
答案 4 :(得分:0)
我能想到的还是检查搜索结果可访问的所有链接(可访问的cffunctions,fuseactions等)是安全的公开还是受保护到必要的级别,如:
答案 5 :(得分:0)
您还可以在搜索中添加验证码,以确保它是人为驱动的。然后,您将不会耗尽您的服务器或数据库,试图找到自动查询的答案。