个人理财 C ++编程:10个反黑客技巧 - 假人

C ++编程:10个反黑客技巧 - 假人

目录:

视频: 【黑客入门教学】09 WEP破解 wifite自动化破解WEP加密 2024

视频: 【黑客入门教学】09 WEP破解 wifite自动化破解WEP加密 2024
Anonim

作为一名C ++程序员,您需要学习在C ++代码中应该做的事情,以避免编写容易受到黑客攻击的程序。还介绍了如果您的操作系统支持它们,则可以启用的功能,例如地址空间布局随机化(ASLR)和数据执行保护(DEP)。

不要对用户输入做出假设

程序员的隧道视觉在早期开发阶段是可以的。然而,在某些时候,程序员(或者更好的是一些与代码的开发无关的程序员)需要坐下来,忘记当前的问题。她需要问自己:“这个计划如何对非法输入作出反应? “

<! - 1 - >

以下是检查输入的一些规则:

  • 不要假设输入的长度。

  • 不要接受比在固定长度缓冲区(或使用可变长度缓冲区)中有空间的更多输入。检查每个数值的范围以确保它是有意义的。

  • 检查并过滤掉黑客可能用来注入代码的特殊字符。

  • 不要将原始输入传递到另一个服务,如数据库服务器。
  • 对从远程服务返回的值执行所有相同的检查。黑客可能不在输入端,他可能在响应端。

轻松处理故障

程序应该对程序中发生的故障做出合理回应。例如,如果你对一个库函数的调用返回一个

nullptr,那么程序应该检测这个并且做一些合理的事情。 <! - 3 - > 这里的合理性

应该比较宽松地理解。该程序不需要嗅探,以确定为什么该函数没有返回一个合理的地址。可能是由于不合理的输入,这个要求太过分了。或者可能是构造函数检测到某种类型的非法输入。

没关系。重点在于程序应尽可能地恢复其状态,并为下一个输入位设置,而不会崩溃或损坏现有数据结构(如堆)。 维护程序日志

创建并维护运行时日志,允许某人重建发生安全故障时发生的事件。 (实际上,这种情况在发生任何类型的故障时都是如此)。例如,每次有人登录或退出系统时,都可能需要记录日志。

在发生安全事件时,您一定会想知道是谁登录了您的系统 - 这是最有可能发生安全漏洞的组,并且在查找肇事者时最可疑。另外,你会想记录任何系统错误,包括大多数例外。

真实世界的生产程序包含大量调用,如下所示:

log(DEBUG,“用户%s输入合法的密码”,sUser);

这只是一个例子。每个程序都需要一些类型的日志功能。它是否真的被称为log()是不重要的。遵循一个良好的发展过程

每个程序都应遵循一个经过深思熟虑的正式开发过程。此过程至少应包括以下步骤:

收集并记录需求,包括安全需求。

评论设计。坚持编码标准。

进行单元测试。

  • 根据原始要求进行正式的验收测试。此外,同行评审应在重点进行,以验证要求,设计,编码和测试程序的质量和符合公司标准。

  • 实现良好的版本控制

  • 版本控制是一件奇怪的事情。很自然地不用担心版本1. 1当你在枪口下把版本1.0送出去,进入等待用户伸出来的手。然而,版本控制是一个必须及早解决的重要课题,因为它必须嵌入到程序的初始设计中,而不是在后来才被使用。

  • 版本控制的一个几乎微不足道的方面是知道用户正在使用哪个版本的程序。当用户打电话来说“当我点击它时会这样做”,那么服务台确实需要知道用户正在使用哪个版本的程序。他可能在描述当前版本中已经修复的版本中的问题。

  • 安全认证用户

用户认证应该很简单:用户提供一个帐户名和一个密码,程序在表中查找帐户名并比较密码。如果密码匹配,则认证用户。但是谈到反黑客时,没有什么是那么简单的。

首先,不要将密码本身存储在数据库中。这被称为将它们存储在

中,并被认为是非常糟糕的形式。黑客手中的密码文件太容易了。相反,请保存密码的安全转换。

管理远程会话

当您的所有应用程序在一台计算机上运行时,您可以做出某些假设。一方面,一旦用户认证了自己,就不用担心他被转换成另一个人。与远程服务器进行通信的应用程序无法做出这样的假设 - 正在监听的黑客可以等待用户进行身份验证,然后劫持会话。

有安全意识的程序员可以做些什么来避免这种情况?您不想重复询问用户的密码,以确保连接没有被劫持。另一种解决方案是建立和管理一个

会话。 您可以通过让服务器在远程应用程序发送一个会话cookie后,一旦用户成功通过身份验证,就可以做到这一点。 混淆你的代码

代码混淆

是使可执行文件变得难以让黑客了解的行为。逻辑很简单。黑客越容易理解你的代码如何工作,黑客就越容易找出漏洞。你可以采取的最简单的步骤就是确保你只发布一个不包含调试符号信息的发布版本的程序。当你第一次创建项目文件时,一定要选择创建Debug和Release版本。

永远不要将包含符号信息的应用程序版本分发出去。 使用数字证书签名您的代码 代码签名通过生成可执行代码的安全散列,并将其与由有效证书颁发机构颁发的证书组合使用。这个过程是这样工作的:创建程序的公司必须首先向自己的证书颁发机构注册。一旦证书颁发机构确信我的公司是有效的软件实体,它就颁发证书。这是一个很长的数字,任何人都可以用来验证这个证书的持有人是着名的圣安东尼奥我的公司。

必要时使用安全加密

像任何良好的警告,这个警告有几个部分。首先,“必要时使用加密。 “这往往会让人想起通过互联网交流银行账户信息的想法,但是你应该比这更通用。无论是通过互联网还是通过一些较小的范围传输的数据通常都被称为 运动数据。 “运动数据”应该加密,除非对黑客没有用处。存储在磁盘上的数据被称为

静止时数据。

如果磁盘丢失,被盗或被复制,这个数据也应该被加密。如果笔记本电脑在机场的安全扫描仪上被盗,或者在某个地方的出租车上,那么企业通常会对公司笔记本电脑上的硬盘进行加密。诸如拇指驱动器之类的小型便携式存储设备特别容易丢失 - 这些设备上的数据应该被加密。

C ++编程:10个反黑客技巧 - 假人

编辑的选择

添加新的SketchUp图层并在图层之间移动实体 - 虚拟图层

添加新的SketchUp图层并在图层之间移动实体 - 虚拟图层

是SketchUp非常有用的一部分,他们可以让你的生活变得更轻松。以下是如何在Sketchup中添加新图层以及如何将实体移动到不同图层的方法。添加新图层按照以下步骤将图层添加到SketchUp文件:选择“窗口”→“图层”。图层...

全部关于地理位置快照和SketchUp - 虚拟

全部关于地理位置快照和SketchUp - 虚拟

当您将地理位置快照导入SketchUp ,您可以访问Google庞大的地理数据存储库;快照不仅仅是漂亮的图片:导入快照地理位置自动定位您的位置。这意味着快照设置您的模型的经纬度,并定位在正确的主要方向。任何阴影研究你...

如何在SketchUp中使用场景动画区域

如何在SketchUp中使用场景动画区域

将区域视图与场景组合在一起以创建动画展示您的SketchUp模型都是一种有用且令人印象深刻的方式。基本的想法是,您可以使用场景来创建动画,其中您的剖面在您的模型中移动。以下是您可能需要使用此技巧的几个原因:如果...

编辑的选择

Drupal友好的网页寄存公司 - 傻瓜

Drupal友好的网页寄存公司 - 傻瓜

网页寄存公司为您提供访问Web服务器,您可以在其中安装Drupal并使您的网站在Web上可见。一些公司为您安装Drupal或为您提供一键安装,为您节省了一些工作量。如果您决定自己跳过Drupal的安装,请考虑通过以下方式之一获取帐户...

Drupal花园功能 - 傻瓜

Drupal花园功能 - 傻瓜

让您有机会查看和使用所有Drupal花园功能,可以创建一个新的站点,然后选择自定义选项而不是其中一个已安装的模板:确保已经登录,然后单击我的站点链接。这样做打开了Drupal花园站点经理。点击创建...

Drupal园林主题生成器 - 傻瓜

Drupal园林主题生成器 - 傻瓜

Drupal花园设置完成后,有一些乐趣和玩你的网站上的主题。使用Drupal Gardens Theme Builder控制网站的外观是与安装Drupal自身副本不同的主要方式。但是你不会错过太多...

编辑的选择

上一次显示一张照片(全屏播放)如何在您的照片上一次显示一张照片(全屏播放)尼康D5300 - 傻瓜

上一次显示一张照片(全屏播放)如何在您的照片上一次显示一张照片(全屏播放)尼康D5300 - 傻瓜

很可能您已经在尼康D5300上播放了播放模式。但是,在数码相机上查看照片有不同的选项。对于正常播放 - 即每次只能查看一张照片 - 请执行以下步骤:

如何自定义尼康D3300的优化校准 - 傻瓜

如何自定义尼康D3300的优化校准 - 傻瓜

当您使用尼康D3300的内置原始处理器,您可以尝试不同的优化校准设置,了解每个设置对图像的影响。当您使用免费的Nikon软件Nikon ViewNX处理图像时,您可以选择相同的选项。该程序的原始转换器,以及在Adobe Photoshop中找到的那些...

如何在HDMI屏幕上显示实时预览预览 - 假人

如何在HDMI屏幕上显示实时预览预览 - 假人

尼康D7100相机连接到HDMI(高清晰度多媒体接口)设备,以在该屏幕上查看实时显示输出。摄影师经常使用此功能,因为摄影师需要比相机显示器提供更大的主题。使用此选项时,会出现一些问题:...