Перевести php curl в запрос node js

#php #node.js #curl #request

#php #node.js #curl #запрос

Вопрос:

У меня есть следующий php-код:

         //Create url
        $url = "https://pci.zcredit.co.il/WebControl/RequestToken.aspx";
        $post = "TerminalNumber=$TerminalNumber"
        ."amp;Username=$UserNameamp;PaymentSum=$PaymentSumamp;PaymentsNumber=$PaymentsNumberamp;Lang=$Lang"
        ."amp;Currency=$Currencyamp;UniqueID=$UniqueIDamp;ItemDescription=$ItemDescriptionamp;ItemQtty=$ItemQtty"
        ."amp;ItemPicture=$ItemPictureamp;RedirectLink=$RedirectLinkamp;NotifyLink=$NotifyLink"
        ."amp;UsePaymentsRange=$UsePaymentsRangeamp;ShowHolderID=$ShowHolderIDamp;AuthorizeOnly=$AuthorizeOnly"
        ."amp;HideCustomer=$HideCustomeramp;CustomerName=$CustomerNameamp;CssType=$CssTypeamp;IsCssResponsive=$IsCssResponsive";

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url); // Create the request url
        curl_setopt($ch, CURLOPT_POSTFIELDS,$post); //Set post value
        curl_setopt($ch, CURLOPT_POST, 1); // Set the request method to POST
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Not return data in brower
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        $page = curl_exec($ch);    // Get the response
  

Который я пытаюсь использовать в node js с запросом:

 let url = "https://pci.zcredit.co.il/WebControl/RequestToken.aspx";
        let post = `TerminalNumber=${TerminalNumber}`
         `amp;Username=${UserName}amp;PaymentSum=${PaymentSum}amp;PaymentsNumber=${PaymentsNumber}amp;Lang=${Lang}`
         `amp;Currency=${Currency}amp;UniqueID=${UniqueID}amp;ItemDescription=${ItemDescription}amp;ItemQtty=${ItemQtty}`
         `amp;ItemPicture=${ItemPicture}amp;RedirectLink=${RedirectLink}amp;NotifyLink=${NotifyLink}`
         `amp;UsePaymentsRange=${UsePaymentsRange}amp;ShowHolderID=${ShowHolderID}amp;AuthorizeOnly=${AuthorizeOnly}`
         `amp;HideCustomer=${HideCustomer}amp;CustomerName=${CustomerName}amp;CssType=${CssType}amp;IsCssResponsive=${IsCssResponsive}`;

const request = require('request');

request(url  '/'   post, { json: true }, (err, res, body) => {
  if (err) { return console.log(err); }

});
  

Но должен ли я просто добавить параметры post к исходному URL? Безопасно ли это?

Заранее спасибо!

Комментарии:

1. Это так же безопасно, как и в примере php, но добавление параметров к URL будет запросом GET. Если вы хотите «реальный» запрос post, вы должны добавить параметры в тело запроса. В любом случае, что касается безопасности, вы могли бы проверить значения параметров. Возможно, они могут содержать вредоносный код. Сервер должен проверить это в любом случае, но вы уже можете выполнить большую очистку и проверку своего кода.

Ответ №1:

Синтаксис для отправки форм в кодировке URL с запросом прост, поскольку:

 request.post(url).form({ key: value })
  

Конечно, вы можете отправить запрос с параметрами в URL, используя переменные литералов шаблона, и это ничего не изменит с точки зрения безопасности, но он будет более читаемым.

Ваш код будет защищен, если вы очистите параметры и если вы используете шифрование (https), так же, как вы должны делать на любом языке, как main.c говорится в его комментарии.