📜  安全编码–这是什么一回事?

📅  最后修改于: 2021-04-16 05:58:17             🧑  作者: Mango

所以您认为您可以编码?很高兴知道……这个世界肯定需要像您和我一样的更多极客和书呆子……但是,您的程序安全吗?这就是整篇文章的全部内容。

作为一名程序员,确保您的代码没有任何余地,这是您的工作,也是道义上的责任,这是以后任何其他Black Hat Hacker都可以利用的。这就是安全编码的全部意义。如果您在Google上快速搜索有关安全编码的信息,那么第一个吸引您的注意的链接将是我们自己的Wiki。

安全编码是一种以防止意外引入安全漏洞的方式开发计算机软件的实践。缺陷,错误和逻辑缺陷始终是普遍利用的软件漏洞的主要原因。

好的!足够的行话了……这到底是什么意思?让我给你举个例子。现在,因为我是一个耍蛇人,所以我将使用Python 2.7x…

#test_run.py
pswd ="MY PASSWORD"
not_secret ="Geeks rock!"
  
inputVal = input("Please enter number of geeks") #A VERY BAD IDEA
print "There are", inputVal,"geeks here, chanting", not_secret

现在,继续尝试一下…它可以成功编译,您知道会得到所需的输出!所以,这就是我尝试不同输入时得到的…

运行– 1

请输入极客数量5

There are 5 geeks here, chanting Geeks rock!

运行– 2

          请输入极客人数dir()

There are [‘pswd’, ‘not_secret’, ‘__builtins__’, ‘__doc__’, ‘__file__’,
‘__name__’, ‘__package__’] geeks here, chanting Geeks rock!

运行– 3

          请输入怪胎数量pswd

There are MY PASSWORD geeks here, chanting Geeks rock!

如果您直到现在还没有意识到,请让我声明一下……该程序运行良好!但是,不是按照我们想要的方式…它打印出了我们的秘密数据…现在,您不能为此怪罪语言,也不能怪程序员…他/她做了他被要求做的事…这是安全编码发挥作用的地方。现在,这个例子只是一个很小的例子,一个很小的例子。利用程序的可能性无穷无尽。您所需要的只是一个聪明的头脑和利用这些漏洞的经验。而且,如果您是网络安全人员/ gal,那么雇用对安全编码标准一无所知的编码员可能会成为您最大的错误。因此,为了拥有安全的职业前途,必须具有有关安全编码标准的完整知识。

现在,谁能决定哪种安全编码方式?单个程序员无法做到这一点。值得庆幸的是,我们不必为此烦恼。去检查一下SEI CERT编码标准。它收集了一系列非常好的建议步骤,以确保您的程序安全,并根据C,C++, Java,Perl和Android等编程语言进行排序。但是,可悲的是,对于最简单的语言(我认为),没有给出这样的标准。这是否意味着Python程序始终是安全的?不!!幸运的是,一些Python爱好者开始提出针对Python的类似建议列表,从而催生了今天称为PEP 0008的东西。它被称为Python代码样式指南,创建于2001年。

它包含“安全”和“不安全”程序的详尽列表,是任何Python程序员都必须使用的程序。

现在,足够的理论了!让我们回到一些编码方面!我现在将使用一个Hi-Fi术语,您可以进一步用它来打动某人,这个术语是跨站点脚本(XSS) 。在当前情况下,当每个站点都有一个允许访问者分享其经验的评论部分时,XSS已经成为黑客(不是一个好词!)经常使用的窃取数据/启动分布式拒绝服务的方法( DDOS)攻击/将病毒和恶意软件安装到客户端系统中,以及许多其他“不好-很好”的行为。

大多数注释部分允许用户以HTML代码编写,以提供格式化的机会。这意味着首先处理注释,然后将结果打印在站点上。因此,假设我没有编写注释,而是编写了这样的JavaScript代码:

window.alert(“Your comment has been received! – Geeks4Geeks”);

现在,按照我刚才讨论的内容,将处理代码,并且客户端将收到一个弹出窗口-上面提到:“您的评论已收到! – Geeks4Geeks ”。听起来还不错……但是,请想象一下可能性。可以编写一个简单的脚本,该脚本将在客户端系统中下载恶意软件/病毒,或显示带有吸引其点击内容的广告,该广告将出现在可以窃取Cookie的IFrame中(称为点击劫持)进一步导致所谓的会话劫持;选项不限!那么,我们该怎么办?同样,解决方案在于安全编码!仅举一个示例,说明如何使用Django避免XSS和Clickjacking:

#Clickjacking

response = render_to_response(“webpage.html”, {},
context_instance=RequestContext(request))
response[‘X-Frame-Options’] = ‘DENY’ #Frame Killing
reponse[‘Content-Security-Policy’] = “frame-ancestors ‘none’”
return response

#XSS

#Django默认情况下会转义HTML,因此大多数程序将免受#XSS攻击

** {{内容}} **#是安全的

** {{内容|安全}} **#覆盖转义,不是一个好主意

因此,基本上,摘要是,如果您想在编码领域取得成功,则应该养成遵循安全编码标准的习惯。为什么?因为只有那些不公开的程序才是安全的…每个人都可以使用它们,所以很多人都在试图破坏您的代码……您最好注意这一点!

有了这个,我就走了!

奥夫·维德森(Auf Wiedersehen)! (再次见到德语)

关于作者:

Vishwesh Shrimali是BITS Pilani的机械工程专业的学生。他实现了虚心关于所有要求的知识,他的分支机构白帽子黑客,网络安全运算符和前竞争程序员都没有讲过。作为坚定地相信Python力量的人,他的大部分工作都使用相同的语言。每当他除了编程,上课,看CSI Cyber之外,都会散步很长一段时间,在寂静中弹吉他。他的人生座右铭是–“享受生活,因为这值得享受!”

如果您还希望在此处展示您的博客,请参阅GBlog,以在GeeksforGeeks上撰写来宾博客。