CInternetSession安全吗?它是加密的吗?

时间:2016-02-24 18:53:26

标签: c++ http post encryption

我向SharePoint网站发出HTTP POST个请求,该网站需要用户credential

我想确保正在使用的usernamepassword是安全的,并且无法轻易嗅探。

我环顾四周看看CInternetSession是否对数据进行加密,但我没有找到任何可靠的信息。

我使用此代码是否安全?

我将这些凭证传递如下:

void CUserPassDiag::Connect(){

CString username;
CString password;
m_UsernameCEditControl.GetWindowText(username); // get username
m_passwordCEditControl.GetWindowText(password); // get password

CInternetSession session(_T("session"));
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
const int szBuffSize = 20000; 
char *szBuff = new char[szBuffSize]; // needed to store the html file

try
{
    /*
     * First Request - Retrieve the HTML page
     */

    CString strServerName = _T("SPsite");

    // Physyical Location Widget URL
    CString strObject = _T("/somepage.aspx");

    // Headers for the POST Request
    CString headers = _T("Content-Type: application/x-www-form-urlencoded\r\n");
    headers += _T("Host: SPsite\r\n");
    headers += _T("Pragma: no-cache\r\n");
    headers += _T("Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, *//*\r\n");
    headers += _T("Accept-Language: en-CA\r\n");\
    headers += _T("Referer: SPsite/somepage.aspx\r\n");

    // Headers Ready
    CString szHeaders = _T(headers);

    // This will store the POST request return value
    DWORD dwRet;

    // Get connection with username and password
    pServer = session.GetHttpConnection(strServerName, INTERNET_DEFAULT_HTTP_PORT, _T(username), _T(password));

    // open request
    pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, strObject);
    pFile->AddRequestHeaders(szHeaders);
    pFile->SendRequest();
    }catch(){
     }
  }

1 个答案:

答案 0 :(得分:1)

GetHttpConnection只是从WinInet库中调用WinAPI的InternetConnect。除非通过“{https://”URL的INTERNET_DEFAULT_HTTPS_PORT选项通过安全端口,否则它不安全。

让我们说密码是“蓝芝士”。如果我告诉你密码,那么其他人都会看到它。我可以用另一个密码加密密码,然后我必须告诉你另一个密码,其他人也会看到。所以我无法通过开放频道向您发送密码,除非使用像Diffie-Hellman密钥交换这样的方法。

如果该程序仅供您自己使用,或者您可以保护其方法,那么您可以在软件和网站之间建立响应挑战系统。

如果您正在制作公开发布的程序,那么基本上如果没有SSL,这是不可能的,因为黑客可以监控您的代码所做的事情。