0

我公司抓取我们系统中公司的网站,并允许用户专门搜索这些公司。目前,我们所有的搜索工具都使用 Sphinx。

我们的客户(我们索引的公司)要求提供一个搜索小部件,他们可以将其嵌入到他们的网站上,以便为他们自己的网站添加搜索功能。搜索小部件将允许用户从我们客户的网站提交搜索查询。然后结果将加载到我们的网站上(这个搜索功能已经在我们的网站上运行......只是不是可嵌入的小部件)。起初这看起来很简单,但后来我开始考虑安全性和跨域表单提交。

搜索功能已经存在于我们网站的 uri 中,如下所示: /companies/profile_search/1581/die-cutting

companies是我的控制器。profile_search是我的方法。1581是要搜索的公司的id。die-cutting是搜索查询。

我希望我们的客户能够简单地将代码剪切并粘贴到他们的站点中以嵌入小部件。

  1. 我应该简单地将搜索查询指向上述网址吗?
  2. 如果不是,我应该如何设置它以确保它的安全?
  3. 我在这里忽略了其他问题吗?

我们的网站主要使用 PHP 构建,使用 CodeIgniter 和 Sphinx 进行搜索,如果有帮助的话。

4

3 回答 3

1

CodeIgniter 具有内置的 CSRF 保护,如果您要求客户将 a 粘贴form到他们的网站中,这可能会妨碍您。

做到这一点的简单方法是为您的客户提供一个iframe标签以粘贴,并form从您的站点提供该标签,target="_top"用于使表单提交重新加载整个窗口。

于 2012-06-30T01:41:17.630 回答
0

您也可以仅对此方法禁用 CSRF;使用预系统挂钩,或者更骇人听闻地作为条件,config.php例如:

 $config['csrf_protection'] = (stripos($_SERVER["REQUEST_URI"],'/controller/method') === FALSE) ? TRUE : FALSE;

可以在这里找到关于暂时禁用 CSRF 的详细讨论。

于 2012-06-30T22:48:49.270 回答
0

对于跨域请求,您可以使用 JSONP:http ://en.wikipedia.org/wiki/JSONP

于 2012-06-30T22:52:10.230 回答