Security 了解网络安全的步骤

Security 了解网络安全的步骤,security,Security,我已经用C++,Matlab,以及类似的科学语言编写代码很长时间了,但最近我想进入web编程领域。我自学了HTML和CSS,还涉猎了Javascript、PHP和mySQL。我真的很想开始制作更高级、用户驱动的网站(如果这有意义的话——最终是类似于和功能上的网站),但我担心我对互联网安全和漏洞的了解不够,无法确保我所做的编程决策是安全的 您有什么建议或信息可以提供给我,这将帮助我对我产生的代码的安全性充满信心 如果这一切都没有意义,或者你想澄清一下,只要问一下。 < P>查看微软出版社的Mich

我已经用
C++
Matlab
,以及类似的科学语言编写代码很长时间了,但最近我想进入web编程领域。我自学了
HTML
CSS
,还涉猎了
Javascript
PHP
mySQL
。我真的很想开始制作更高级、用户驱动的网站(如果这有意义的话——最终是类似于和功能上的网站),但我担心我对互联网安全和漏洞的了解不够,无法确保我所做的编程决策是安全的

您有什么建议或信息可以提供给我,这将帮助我对我产生的代码的安全性充满信心


如果这一切都没有意义,或者你想澄清一下,只要问一下。

< P>查看微软出版社的Michael Howard和David LeBlanc写的安全代码。它有很多关于安全编码的好信息,也有一两章专门介绍web编程。这是一本微软的书,但大多数想法都可以翻译成你所使用的任何语言

链接到

  • 验证所有用户输入,不要在其他基于文本的协议(SQL、HTML、XML、JS)中逐字使用。试着想想任何可以想象的方法,通过特制的输入使你的软件崩溃,并防止它

  • 验证用户身份。想一想任何可以想象的方式,有人可以截取用户的身份信息,并为他做一些坏事。阻止它


  • 基本上就是这样。

    我要说的是,从调查开始,然后。这些应该让您了解需要注意的事情,并让您进入正确的思维模式(永远不要相信用户输入是您认为的或“应该”的)

    您需要了解SQL注入攻击、跨站点脚本攻击、,对于如何管理系统的输入,你必须培养一种健康的偏执狂。这包括学习如何清理用户输入,如何正确使用会话在页面间保存状态,以及如何以及何时使用SSL

    您还需要了解FTP帐户黑客行为的流行、共享托管环境的危险以及web服务器被利用的一般方式

    有几本书专门介绍了PHP/MySQL安全问题,您可能会发现它们很有用。

    我推荐Mark Dowd、John McDonald和Justin Schuh。它很大,但值得一试。

    如上所述,输入(和输出)验证非常重要,身份管理也非常重要。但是,编写一个安全的web应用程序肯定还有更多的内容

    从熟悉OWASP的免费工具和资源开始,订阅他们的新闻提要

    获得一些网络安全方面的基础培训:我推荐斯坦福大学的在线高级软件安全课程,至少参加基础课程,如果你需要开始学习的话,这是值得的


    查看SAN Institute的培训计划和其他资源,查看他们的漏洞电子邮件列表和其他电子邮件列表。SANS提供了一门关于安全PHP编程的课程。

    其他提交的答案提供了很好的建议,但要将其分解为一个规则系统:

  • 偏执
  • 假设您的用户是积极敌对的
  • 假设您的代码不安全
  • 验证(客户端和服务器端)所有内容:
  • …您的用户提交的
  • …存储在数据库中的
  • …您从数据库中读取的
  • 不允许用户看到您未创建的任何错误消息。如果“verify_username()正好需要两个参数”,请不要让用户看到该错误消息。他们不应该知道你函数的名称,也不应该知道他们希望使用什么、输出什么或失败什么
  • 聪明点
  • 你的代码和我的代码都很糟糕;掌握新的工作
  • 围绕主题阅读,即使是那些你觉得枯燥的主题,肯定是那些你难以理解的主题
  • 假设您的用户比您更聪明(那些积极敌对的用户可能比您更有打破锁定的经验)
  • 对你能想到的所有内容进行错误检查,然后让一个四岁左右的孩子按所有内容并填写你可能有的任何表格/字段。如果出现问题(一个字母数字而不是整数,或者其他任何东西),请添加错误条件,以阻止它向外界公开脚本的内部内容
  • 尽可能将所有内容移到web根目录之外,以防止用户从其他站点或其计算机访问您的脚本
  • 这可能有点悲观或愤世嫉俗,但即使有这些规定,我认为我们也不会“安全”;有些我们赢了,有些我们输了,但我们只会听到损失。我们不太可能听到所有这些


    只要尽你最大的努力记住这些,然后,如果你想到任何更多的偏执手段来影响你的网站的安全性,不要犹豫,变得更偏执。并反馈给社区;在这方面我们都需要帮助。

    基本上不是这样的!在安全问题上涉及的东西太多了。举例来说,XSRF与用户输入验证和用户身份验证无关……XSRF正是拦截用户身份的例子。