我向SharePoint网站发出HTTP POST
个请求,该网站需要用户credential
。
我想确保正在使用的username
和password
是安全的,并且无法轻易嗅探。
我环顾四周看看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(){
}
}
答案 0 :(得分:1)
GetHttpConnection
只是从WinInet库中调用WinAPI的InternetConnect
。除非通过“{https://”URL的INTERNET_DEFAULT_HTTPS_PORT
选项通过安全端口,否则它不安全。
让我们说密码是“蓝芝士”。如果我告诉你密码,那么其他人都会看到它。我可以用另一个密码加密密码,然后我必须告诉你另一个密码,其他人也会看到。所以我无法通过开放频道向您发送密码,除非使用像Diffie-Hellman密钥交换这样的方法。
如果该程序仅供您自己使用,或者您可以保护其方法,那么您可以在软件和网站之间建立响应挑战系统。
如果您正在制作公开发布的程序,那么基本上如果没有SSL,这是不可能的,因为黑客可以监控您的代码所做的事情。