Php 我应该如何设置一个搜索小部件,客户可以嵌入到他们的网站上?

Php 我应该如何设置一个搜索小部件,客户可以嵌入到他们的网站上?,php,forms,codeigniter,search,cross-domain,Php,Forms,Codeigniter,Search,Cross Domain,我的公司在我们的系统中搜索公司的网站,并允许用户专门搜索这些公司。我们目前所有的搜索工具都使用Sphinx 我们的客户(我们索引的公司)要求提供一个搜索小部件,他们可以将其嵌入到自己的网站中,以便将搜索功能添加到自己的网站中。搜索小部件将允许用户从我们客户的网站提交搜索查询。结果将加载到我们的网站上(这个搜索功能已经在我们的网站上运行了…只是不是可嵌入的小部件)。起初这看起来很简单,但后来我开始考虑安全性和跨域表单提交 搜索功能已存在于我们的网站上,uri如下: /companys/profil

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

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

搜索功能已存在于我们的网站上,uri如下:
/companys/profile\u search/1581/模切

公司
是我的控制者
profile\u search
是我的方法
1581
是要搜索的公司的id<代码>模切是搜索查询

我希望我们的客户能够简单地剪切和粘贴代码到他们的网站,嵌入小部件

  • 我是否应该直接将搜索查询指向上面的url
  • 如果没有,我应该如何设置以确保安全
  • 还有其他我忽略的问题吗

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

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


    要做到这一点,最简单的方法是为您的客户提供一个要粘贴的
    iframe
    标签,并使用
    target=“\u top”
    从您的站点提供
    表单

    您也可以仅对该方法禁用CSRF;在
    config.php
    中,使用预系统钩子或更老套的条件,例如:

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

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

    对于跨域请求,您可以使用JSONP:

    您可以使用
    iframe
    表单
    ,在提交时使用指向您站点的“品牌”登录
    操作
    ,或者开发AJAX REST服务。我可能会从一个统一的搜索模型开始,该模型在站点级别公开搜索结果,并“向上”进行全局搜索,这样您就可以关注站点周边的安全问题,然后将其抽象为全局联合搜索(可能使用类似Shibboleth的SSO服务器端策略管理身份).也许这其中有一点我不太明白,但如果联邦搜索已经到位,那么出局的安全不是明智的吗?总之,在中心搜索位置,您是否有方法识别请求以及对数据访问和权限的控制粒度?换言之,你能以角色为基础对网站的某些部分进行分类吗?或者它只是开放的,可以免费搜索任何东西?该公司特有的搜索功能尚未投入生产。可能可以自由搜索任何东西,尽管我们可以把它放在授权墙后面。我想,如果这匹马是开着的,它已经出了大门。这是一个有趣的问题;如何在减少不当访问的同时提供足够的访问权限?如果您对数据有顾虑,则必须确定要覆盖的授权模式。一个基本的原则是有一个。我建议和。如果关注事项需要资源来执行,我同意,CSRF令牌比大多数考虑“拖放代码”的管理更复杂。
    iframe
    显然是最合理的方法。CodeIgniter的CSRF功能是否适用于获取请求??