前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >弱类型与强类型语言“=”号的不同以及引发的安全问题

弱类型与强类型语言“=”号的不同以及引发的安全问题

原创
作者头像
天方
发布2022-09-14 11:23:59
5410
发布2022-09-14 11:23:59
举报
文章被收录于专栏:tianfangtianfang

#弱类型与强类型语言中“=”号的不同

scode type="red"

声明:以下文字仅为个人观点,如有不正确的地方欢迎指正

/scode

##0x01

在编程语言中的 “=“ 号不同于在数学上的 ”=“号,在数学中,x=5 与 5=x 是一个意思,可以等量替换,但在编程语言中,x=5与5=x 就不同了,后者会报错 因为这里的等号是赋值,且变量名不能为数字开头,我认为”=“号是一个人类伟大的发明.

##0x02 强类型语言

我们(我)知道c语言是一门强类型语言,而诸如python,php等则是弱类型语言。何为强类型?就是在变量声明的时候就预先将其规定类型,如 int a=1;我们可以很清楚的知道a变量是一个数字整型,数值为1,在大部分编译器中占4个字节, char b='1';这时b变量则是字符型,占一个字节,为字符 ‘1’,对应的十进制ascll码为49,若 a==b 则返回 false ,在比较a和b时,比较的是ascll码值 数值1 与 字符1显然不相等

undefined

undefined

##0x03 弱类型语言

在弱类型语言中,大部分时候我们都不太需要提前定义声明变量和类型 如在php中$x = 5;$y = '5' ; 在弱类型语言中 "==”与C语言有所不同的是他比较的不是ascll码,而是数值 如 x==y$x==$y 返回的均是true.

上面的 "==" 更侧重相等,例如两条狗长的一模一样,而且还一样可爱,那么我们就认为它们相等,但是外表上一样,性格,习惯等又不相同,这里则使用“===”三个等号做判断,意思是全等,完全一个模样刻出来的。

引用上面的x和y变量 这时 $x===$y 则返回的是 fasle ,优先比较两者的类型

undefined

##0x04 引发的安全问题

在编程语言中科学计数法的表示为 数值e整数,如 5e5 = 5*10^5,若e的前面为0,则后面不论是什么则为0,而null==0 返回true。

这是一个很神奇的地方, 1234=='1234abc' //返回true 比较数字 若数字相等则abc被忽略

undefined

例如 :

代码语言:txt
复制
<?php
代码语言:txt
复制
md5('QNKCDZO')==md5('240610708'); //返回true
代码语言:txt
复制
0==md5('QNKCDZO') ; //返回true
代码语言:txt
复制
0==null; //返回true
代码语言:txt
复制
md5(array()) //返回null 某些版本会报错

假如以下是某个程序的登录判断

代码语言:txt
复制
<?php
代码语言:txt
复制
$user = trim($_GET['user']);
代码语言:txt
复制
$pwd = trim($_GET['pwd']);
代码语言:txt
复制
$pwds = $db->query("select pwd from user where user = $user");//密码为 s214587387a
代码语言:txt
复制
if(md5($pwd)==md5($pwds)){
代码语言:txt
复制
echo '登录成功';
代码语言:txt
复制
}else{
代码语言:txt
复制
echo '登录失败';
代码语言:txt
复制
}

所以绕过登录就很简单,通过构造参数以及数组则可绕过验证。

代码语言:txt
复制
localhost/?user=admin&pwd[]=666

把两个等号换成三个等号就可以

这是一道ctf的简单题...

##0x05 优势与劣势

毫无疑问,在弱类型语言下三个等号的判断条件更为严格,目前版本的更新也越来越重视强制类。

两个等号提供给了程序员更灵活的处理方法,相对应的也会带来安全隐患

undefined

undefined

undefined

undefined

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档