如何保护我的分子类变量值,例如来自欺骗引擎用户等人的键长和 NH3的反转概率没有减速很多)?
这是否可以防止外部影响?
class molecule
{
public:
molecule()
{
...
}
protected:
int *bond_length;
int *probability;
}
这更安全吗?
class molecule
{
...
private:
int *bond_length;
int *probability;
}
如果以上所有内容都容易受到类似欺诈引擎的软件的攻击,那么下面的逻辑是否合乎逻辑?
class molecule
{
public:
molecule(){... ... ...}
...
...
//still public
int *bond_length_fake;
int *bond_length;
int *prob_fake;
int *prob;
}
...
//somewhere in the program
void thread_real_to_fake(void * molecule_parameters)
{
int bond_length_backup;
molecule * param=(molecule *)molecule_parameters;
while(working)
{
if((param->bond_length_fake)!=(param->bond_length))
{
param->bond_length_fake=param->bond_length;
}
}
_endthread();
}
好吧,这可以通过使假货永远等于真假来保护假货。但如何保护真实的?我可以使用随机指针来获得真正的价值吗?如果是的话,我该怎么办?
答案 0 :(得分:2)
您无法保护计算机免受运行软件的侵害。如果有人控制机器,他们可以随意操作它,这包括修改正在运行的程序的状态。
您可以做的最安全的事情是在一个单独的,无法访问的服务器上运行该程序,并通过网络转发I / O(例如,转发到浏览器窗口)。
编辑:作为替代方案,您可以将程序的引擎部分作为以单独用户身份运行的服务运行。这提供了一定程度的保护。引擎必须检查提交的用户输入(例如击键)是否以合理的速率进入。这允许您在一定程度上强制执行规则,但不会阻止用户通过操纵客户端中的图形渲染来透视墙。