你会如何解释一个外行人或编程初学者,面向对象方法的大胆点 - 安全
How would you explain a layman person or a beginner in programming, the bold point of object oriented approach - the SECURITY?
安全代码实际上是什么意思?是不是你不能让代码做其他事情,它不应该做?
我的许多同行说迁移到 c++ 或 java,因为它们更安全,因为哎呀,但当我问为什么时,他们只是说,"这只是.......是"。
一个例子将不胜感激。我在C语言中是相当菜鸟,在C ++中是超级菜鸟。(以防万一你想知道答案的复杂性会让我理解。
我认为您将模糊的术语"安全"与封装混淆了。
http://en.wikipedia.org/wiki/Encapsulation_(对象oriented_programming)
"安全",在保护敏感信息和防止攻击者控制您的系统等的意义上,与面向对象的编程无关(尽管面向对象的编程肯定可以用来实现这种安全措施)。
以下是使任何代码安全的参数:
1.代码应该只做预期的事情。 例如:"从表名中选择 *,其中 id='" + txtUserInputId + "'" 在上面的查询中,它容易受到SQL注入的影响。
阿拉伯数字。代码必须验证所有用户输入。
3.除身份验证外,还应正确实施授权。
4.用户输入数据应在处理前进行清理。
5.应正确管理会话。它还会影响代码的安全性,如何在 .Net 或 Java 或任何编程语言中管理会话。
6.内存必须是托管属性。一个进程应该无法访问另一个进程的内存。
7.在执行任何数据库操作之前,必须验证数据库约束。
8.必须保护配置免受外界影响。例如:.Net 框架不允许用户查看 Web.config 文件。Web.config 文件可能包含数据库凭据等敏感信息。
注意:可以说 C#.Net 在查询执行方面是安全的。因为它提供了自动为您处理用户输入数据的命令参数。
这里"安全"的中心点是OOP定义一个合约(接口)并分离实现。这称为封装。通常"安全"意味着别的东西,但我想这不是你的意思。
也就是说,请考虑:
class A
{
private:
int member_var;
public:
A( int v )
{
if( i % 2 == 1 ) throw "odd!";
member_var = v;
}
};
这使您可以确保member_var始终包含偶数。只有你的方法(A
的方法)被允许修改member_var
,所以你可以保证你的类中没有一个用户可以把一个奇数放进去。
与其他更动态的语言相比,OOP 语言可帮助您在编译时检查所有规则。动态语言通常在运行时进行检查,这可能为时已晚。编译器的静态分析有助于在将错误交付给客户之前防止错误。
这被称为(类)不变量,如果你想谷歌了解更多信息。
- 使用std::函数映射对象方法
- 正在调用shared_ptr对象方法
- 检查哪个对象调用了另一个对象的对象方法
- 如何在C++中循环访问未知对象方法?
- 分段错误(内核转储) C++面向对象编程
- 由于缺少类模板,NVCC 编译面向对象代码时出现问题
- c++ 替换调用对象方法的宏函数
- 我能否通过将函数实现为类对象方法来避免使用互斥锁
- 在C++面向对象程序中,谁负责删除传递给构造函数的对象
- 是否有一种设计模式或面向对象的基本原则来处理这种共享资源的情况?
- 多态性的面向对象方法
- 使用C库的面向对象应用程序的方法
- 你会如何解释一个外行人或编程初学者,面向对象方法的大胆点 - 安全
- C++面向对象程序中的获取和设置方法
- DirectX 9中面向对象渲染框架的通用方法
- (c++)面向对象——用类拓展——初学者的烦恼
- 理解面向对象代码的工具和方法
- 教授面向对象(c++)由外到内vs由内到外的方法
- 面向对象的关闭窗口方法
- 在保持良好的面向对象设计的同时重用代码以提高性能的最佳方法是什么?