保护 PHP 和 C# 之间的通信

本文关键字:通信 之间 PHP 保护 | 更新日期: 2023-09-27 18:31:33

我正在开发一个需要与Microsoft Dynamics CRM集成的PHP应用程序。我研究了PHP和MSCRM服务器之间直接通信的方法,最终决定使用C#桥来设计它,即PHP应用程序连接到与MSCRM交互的C#服务。

现在我的问题是安全性,C# 服务和 MSCRM 服务器之间的通信是安全的,但在 PHP 应用程序和 C# 服务之间,我对如何实现某种加密有点困惑。

基本上,我正在寻找建议,以前有人处理过这样的问题吗?你做了什么?是否有一种简单、安全的方法可以做到这一点,或者它是一个复杂的过程?

保护 PHP 和 C# 之间的通信

你可以让PHP直接安全地与CRM对话。 额外的桥只是开销,实际上并没有提供太多好处。

以下是一篇博客文章,其中包含CRM Online的PHP帮助程序类:http://www.hashtagcrm.com/?p=17

只需从该帮助程序开始,然后使用所需的任何特定功能对其进行扩展。 该帮助程序甚至包含一个示例函数,用于演示如何添加您自己的特定功能:

  //Returns the Parent Account Name of the specified Contact
  public function sampleFunction($contactid){
    $getParentCustomer = '
                        <Retrieve xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                          <entityName>contact</entityName>
                          <id>'.$contactid.'</id>
                          <columnSet xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts">
                            <a:AllColumns>false</a:AllColumns>
                            <a:Columns xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
                              <b:string>parentcustomeridname</b:string>
                            </a:Columns>
                          </columnSet>
                        </Retrieve>';
    $getParentCustomerResult = $this->sendQuery($getParentCustomer, 'Retrieve');
    $responsedom = new DomDocument();
    $responsedom->loadXML($getParentCustomerResult);
    $KeyValuePairs = $responsedom->getElementsbyTagName("KeyValuePairOfstringanyType");
    foreach($KeyValuePairs as $results) {
      if ($results->childNodes->item(0)->nodeValue == "parentcustomeridname") {
        return $results->childNodes->item(1)->childNodes->item(0)->nodeValue;
      }
      else {
        return 'No Result';
      }
    }
  }

然后在你的主程序中,你会运行这样的东西:

require_once('dynamicsclient.php');
$dynamicsClient = new dynamicsClient(0);
//prints the Parent Account name of the specified Contact ID
echo $dynamicsClient->sampleFunction("<CONTACTID>");