咖喱如何征服亚洲

1

你对人类的认知,是什么?

算了,不重要。

在印度四个男人轮奸了孟加拉巨蜥面前,都不重要。

哦对了,巨蜥是公的。

数风流人物,他们也太风流了。

正因为三哥各种动不动就开挂的操作,让我都无法直视咖喱这玩意。

毕竟在我国,咖喱就等同于三哥。

咖喱味英语,就是印度口语。

咖喱味阅兵,就是摩托车载人大赛。

作为一个学渣,我虽然听不懂三哥的英语讲的到底是啥。

但是我能听懂这英语肯定是三哥讲的。

毕竟浓浓的咖喱味。

咖喱之于印度,就相当于烧烤之于东北,火锅之于川渝,大葱之于山东,扎啤之于济南,是当地饮食的代表。

为什么印度人这么喜欢咖喱,这还要从很久之前讲起。

首先要知道,“咖喱”这种东西和茶叶,咖啡豆是不同,它不是天然就存在的某种食材。

没有一种材料,叫【咖喱】。

咖喱,是一种复合产品,由多种香料,比如生姜、肉豆蔻、桂皮、丁香、小豆蔻、胡荽、辣椒、洋葱、大蒜、姜黄等混合在一起研磨,再用印度酥油、清水、酸乳酪或者椰子汁调制而成。

是一种后天加工出来的调味品。

上面提到的做法,也并不是咖喱的唯一做法。

在印度,个人的口味不同,调制的配比也完全不一样,至于会放什么不会放什么,每一个印度人都有自己的一套算法。

另外咖喱也不是只有印度咖喱。

泰国咖喱,日本咖喱,都各有特色。

我们先从印度开始。

2

咖喱其实是一种非标准化的产品。

对于食客来说,标准的印度的调料就像薛定谔的猫,在你入口之前,没人知道里面到底会放些什么。

这也非常符合印度人的哲学,比如走在印度街头的小动物,在被入口之前,它也不知道自己是食材,还是玩具。

也许会有特别重口味的,放点牛粪什么的。

毕竟三哥的操作,超乎我的想象。

既然是非标,每一个三哥或者三嫂都坚称自己的香料里有独门手艺。

尤其是那些干净又好吃的印度小吃,的确是充满了毒门手艺。

这种坚持就好比美利坚的可口可乐,虽然和其他的可乐喝起来味道没啥太大的不同,但他们总是强调有特殊的偏方。

祖传的秘方+神秘的成分+有可能治疗便秘的偏方,咖喱,是印度调料的底色,也是它的保护。

关于印度人为什么爱吃这种调料,有一种说法比较无语,但又有些合理。

古代印度宗教氛围浓厚,当时的宗教提倡不吃猪肉不吃牛肉不吃鸡肉,总之啥也不让吃,但是羊,反而是用来吃的。

可能是怕印度人看到了某些地方的人,觉得羊实在是太可怜了,再不用来吃就只能变成用的了。

于是吃羊肉成为古代印度的主流餐饮文化。

这种说法讲真,就很像是高加索人写的。

吃羊肉本身不是问题,但是羊肉太膻,让原本稳如泰山的印度人民坐不住了。

他们只好就地取材,将东南亚流行的各种香料都收集到一块,混合在一起,最终将它们和羊肉一起烹饪。

高端的食材的确只需要简单的烹饪,但是却需要复杂的调味品才行。

很快,这种混合而成的调料不仅成功掩盖住了羊肉的膻味,也延长了羊肉腐败之后的臭味。

闻不到坏,就等于新鲜,于是调料在某种程度上来说,延长了食材的保质日期。

虽然保质期可能仅仅延长了一两天甚至几个小时。

但是对于古代的人民来说,这就相当于防腐剂了。

要是能早点从恒河传到尼罗河,估计木乃伊身上都能散发出一股咖喱味。

等到几千年后英国人打开金字塔的时候,里面弥漫着的味道把小朋友们都馋哭了,英国人当场就决定要把这玩意加入豪华下午茶套餐,吃一个少一个,这才是地道的英伦风。

这画面太美,简直是惨无人道。

在提升味道还能延长时效的双重buff下,“咖喱”这玩意迅速在印度地区火了起来,然后传遍整个东南亚。

这么一看,咖喱就是餐饮界的印度神油。

延时,也是重要的功能。

3

如果你和印度人聊起咖喱,他们可能会一脸懵逼。

准确来说,印度是没有“咖喱”这种东西的。

他们也没有这种概念。

印度有多种多样的调味品,就是我上面提到的,由生姜、肉豆蔻、桂皮、辣椒、洋葱、大蒜、姜黄等等等等香料碾成的粉末。

但是咖喱这个词确是不存在的。

是英国人发明了这个词,并且把一切来自印度的调味品都统称为咖喱。

至于印度人,他们并不知道这是啥。

这种感觉就像全国人民都知道老铁是一句东北话,但是东北人自己都不知道老铁是啥意思。

最终只能被迫接受这是一句东北话。

虽然印度人不知道咖喱是啥,但这完全不妨碍它成为印度的标签之一。

英国人不仅给他们带来了新的女王,也带来了新的词汇。

为了方便阅读,我们也统称印度的种种调料为咖喱。

咖喱这种东西看似带有浓郁的印度特色,但是实际上却是多种文化融合的产物。

既有来自东方的姜黄,也有来自美洲的辣椒。

所以说咖喱既是一种印度食物,但它又不仅仅只是印度的食物。

一开始印度人是不爱吃肉而且口味清淡的,但在后面的四个多世纪里,中亚、葡萄牙、英国等外来饮食文化对印度次大陆产生了巨大冲击,并且不断和本地饮食文化互相影响。

入侵者登陆印度后,外来文化也对印度原有的文化进行融合和改变,逐步形成了我们今天熟悉的印度风格。

1526 年,帖木儿帝国崩溃后,其后裔巴布尔率军入侵南亚次大陆,在攻占德里、征服北印度大部分地区以后建立起莫卧儿帝国。

这个帖木儿帝国是一个横跨中亚和西亚的中世纪国家。

P社玩家对这个国家应该会有点印象。

简单来讲这是一个由蒙古贵族帖木儿在1370年建立的国家,而两年前的1368年是大明登场的日子。明朝替代了元朝,蒙古人重新回到了草原。

帖木儿最开始的目标就是复兴蒙古帝国,他从中亚起兵,西征奥斯曼,控制了中亚和西亚大面积的领土,然而在1404年东征明朝的路上,翻越天山帖木儿还没来及的和朱棣交手就染疾而死,两国的大战也因此而终止。

还没有开始,就已经结束了。

后来就是烂俗的故事,帖木儿的家族展开了一轮又一次的王位之争,在历史的车轮中被反复碾压后帖木儿帝国被乌兹别克人所取代,其后裔巴布尔逃到南亚也就是现在的印度,建立了莫卧儿帝国。

所以,印度人喜欢躺平,都是写在名字里的。

当时印度本地人战斗力颇为拉胯,被这群来自西亚的流亡者打得满地找牙。

他们想排外,但是有心无力。

历史总是惊人的相似,东亚大国之间的战争,比如汉和匈奴、金和辽、和元战争结果总是会直接或者间接影响其他地区的发展,让其他地区进行一轮大洗牌。

而这种大洗牌又会形成多米诺效应,再次影响到更远的地区。

这就有点像电影里常见的黑吃黑情节,军阀头子揍了黑社会一顿,黑社会为了出气就揍了旁边看热闹的普通人。

而印度就一直扮演着这个嗑瓜子的角色。

巴布尔征服印度初期,印度社会还广受佛教和耆那教的影响,这俩宗教鼓励素食,禁止杀生。

以婆罗门为首的高级种姓人群普遍实行素食主义,跟我们理解的佛教基本一样。

所以当时的印度人提倡清淡饮食,抵制一切可能刺激欲望的食物,比如大蒜和洋葱。

禁欲,是印度宗教的第一目标。

4

莫卧儿人的饮食和印度人不太一样,他们不仅不爱吃素,而且非常爱吃肉。

吃肉的时候还喜欢撒香料。

这也很好理解,毕竟亚欧大陆上各国之间战乱不断,大家几千年来的共识就是只有吃饱了才有力气打仗。

所以肉类一直能量的来源,也是力量的象征。

印度人爱好和平,最多就是玩玩和平鸽,所以肯定不需要吃太多的肉。

波斯厨师随军队一起来到印度北部,开始使用用香料烹制肉类,到这个时候我们就有一个神奇的发现,印度人的饮食风格还真的是由蒙古人决定的。

怪不得不吃牛不吃猪单单爱吃羊,也在这里得到了合理的解释。

莫卧儿的饮食风格改变了印度人的口味,现如今印度人最常见的咖喱洋葱,就是典型的中亚饮食风格。

香料在这个时候走进了印度的千家万户,本地人放弃吃素后迅速学会了用香料和肉烹制一顿饭。

此时的莫卧儿帝国精英阶级都是穆斯林,而底层基础则是印度教。

双方在政治和文化上互相影响。

波斯文化成了印度的上流社会的文化。

波斯风格的饮食也成为了印度上流社会的饮食。

5

莫卧儿帝国时期的咖喱和如今的咖喱相比,还是差一点东西。

虽然只差了这一点,但是口味却千差万别。

那就是辣椒。

很难想象如果咖喱里没有辣椒,那是一种怎样的平行世界。

但是在15世纪葡萄牙人到达印度之前,印度人也不知道辣椒是啥。

他们普遍用孟加拉特产的,味道有点甜的荜菝或者味道刺激又辛辣黑胡椒当作咖喱中辣味的来源。

胡椒,是印度的特产之一。

当中亚被奥斯曼帝国统治后,欧洲与东方的路上交通就这么被切断了。

欧洲人无法通过陆运与中国和印度等国进行贸易,但是他们又迫切想要得到瓷器和茶叶,胡椒和黄金。

于是欧洲人开始利用海路来寻找中国和印度,维持原本的商贸往来。

大航海时代来临,两个重要的发现,一个是美洲大陆,另一个就是辣椒。

于是葡萄牙人给印度人带来了新的食材,这不仅仅改变世界餐饮历史,也改变了印度人底层的味蕾。

三哥发现辣椒跟荜菝形状相似,口味则更加火辣。

最重要的,辣椒的种植成本低,而且容易保存。

于是辣椒的传播速度快得惊人,传遍印度南方仅仅花了几年时间。

而同期的中国,从见到辣椒到第一次食用辣椒中间间隔了上百年。

这,就是我们和三哥之间的差异。

底层的三哥们找两块石头就能将辣椒研磨成粉,然后加上生姜和盐等等,就能直接用来拌饭了。

有一说一,辣椒拌饭,的确YYDS。

辣椒不仅能提供日常的调味,也能给穷人补充少量的维生素c,当然印度穷人并不知道这些。

印度药剂师之前都是用胡椒入药,用它治疗肠胃滞胀的病人,在辣椒出现后也改了方子,多吃几根辣椒,随着如厕频率的增加,什么胃胀都能治好。

如果没有痔疮这种疾病的存在,我真的忍不住给辣椒点个赞。

如今辣椒已成为印度咖喱甚至是南亚咖喱中不可缺少的一部分,咖喱以辣为尊。

随着对印度的深入了解,葡萄牙人发现南印度流行一种盖浇饭,主要成分就是小豆蔻和姜、香草、水果以及其他调味品。

印度南部的泰米尔人称这种东西为“kail”,而在印度西南部的卡纳达人和马拉雅拉姆人那里,“karil”一词被用来指蔬菜或肉一起煮的菜肴调料汤汁。

葡萄牙人吸收了各类称呼再将其融入葡萄牙语,就有了“caril”以及“carree”。

到了随后而来的英国人那里,“caril”最终演变成了英语“curry”,也就是今天的咖喱。

6

1600 年12月31日,英国东印度公司由伊丽莎白一世特许而设立,他们与莫卧儿帝国的王室上层关系紧密,很快就在印度大陆得到经营上的特权,并靠此击败了荷兰葡萄牙等国的香料商人,逐步垄断印度市场。

直到1858年被解除行政权力前,东印度公司已经从一个商贸企业成了印度的事实主宰者。

别的国家都是军队整商业,他们是经商的变军队。

英国人带来了殖民主义,基督教和女皇,同时也带来了英国乡绅喜好吃肉的饮食文化。

然而在东南亚湿热的气候里,英国人发现新鲜的肉类无法保存。

欧洲菜在印度水土不服,印度的厨房也不适合烹饪欧洲菜肴。

正当英国人在惊恐是不是又要回到炸鱼薯条的搭配中时,他们发现最好的肉类烹饪方法不是烤炙,而是像莫卧儿帝国的许多特色菜一样,用印度各地的香料来烹饪。

当时随行医生的记载:

“一种最异类的混合物,包括生姜、肉豆蔻、桂皮、丁香、小豆蔻、胡荽、辣胡椒、洋葱、大蒜、姜黄,用杵和臼将其碾碎为粉末,用酥油调至糊状……再加入炖煮的小羊或禽类。” 

在印度的英国人创造了新的菜系—英式印度菜。

这是一种英印结合的新口味,包括咖喱豆蔬鸡、咖喱浓汤、咖喱虾等。

在发明了新菜系的同时,他们也顺便发明了新单词。

把葡萄牙人那里学会了“caril”一词,改造成英语词汇“curry”。

英国人把“curry”当作普通词汇来用,既指代印度各地所有含香料的汤汁和浆糊,同时也包括印度各地肉菜炖煮后的菜肴。

又指用咖喱烹饪的一切菜肴,如咖喱鸡、咖喱羊、洋葱咖喱、豆蔬咖喱,土豆咖喱,连同他们自己的英式印度菜,也被称为“curry”。

英国人不仅仅生生造出咖喱这个词汇,还借助在印度修铁路的便利,将英国风格的咖喱菜运往印度各地。

同时,英国人也将咖喱这种东西带回欧洲。

退休后的东印度公司员工多多少少会带着点印度的生活习惯回到英国,主要是他们在印度的厨师和佣人。

只有在品尝起印度菜的时候,这些退休的英国人才想起往日在印度飞扬跋扈的日子。

至此,英国街头开始出现印度餐厅。

1777年,伦敦干草市场的诺里斯咖啡馆开始供应咖喱。

1811年3月27日的《泰晤士报》就刊登了一则“印度咖啡馆”的广告,宣称他们有“最完美的印度菜肴”。

1831年,一本面向印度返乡英国人的《印度烹饪书》厨房手册由东方翻译出版社出版。

1840年,英国咖喱制造商开始宣传咖喱的“健康及药用价值”,想要说服每个英国家庭把咖喱这种“东方药膳食品”加入日常饮食中。

印度的调料做法有上千种,英国人面对如此复杂的做法觉得两眼一抹黑,索性选择了其中一种做法,将其包装成标准化咖喱在欧洲贩卖。

19世纪初,英国Crosse&Blackwell公司在印度传统马萨拉(Masala)的配方基础上,制作出一种可以小包装出售的咖喱粉,只需兑水加热就可以与食材一起烹饪。

和如今我们理解的咖喱基本一致。

此时的欧洲对来自东方的东西都颇有好感,尤其是印度的东西,自带神秘属性,于是英国人的标准化咖喱很快就畅销欧洲。

咖喱粉的出现,真正使得咖喱有了标准化,从而加快进入了欧洲市场的步伐。

各种混合香料粉的配方都被英国商家添上了咖喱粉的标签。

过度依赖咖喱粉的英国咖喱已经和原本的印度咖喱大不相同,就跟立顿茶包和中国茶叶不同一样。

英国人根据自己的的口味对咖喱的香料配比进行了调整,相比印度厨师每个人都有自己的秘方不同,英国咖喱因为过于标准化,味道上也是千篇一律。

但正是这种标准化降低了制造成本,也降低了英国老百姓的接受成本。

到了19世纪50年代,咖喱终于进入英国百姓的厨房。

和印度能流行咖喱的理由一样,除了味道之外,防腐的能力才是关键。

英国人发现这种来自神秘东方的调味品用来处理隔夜饭和隔夜肉效果非常不错。

无论是咖喱牛肉还是咖喱鸡肉,都被贴上了隔夜菜解决方案的标签。

这其实也很好理解,印度咖喱辛辣的特点的确能掩盖肉类变质的味道。

一直到19世纪末,咖喱菜在英国摆脱了低级的标签,高级晚宴开始出现咖喱龙虾、咖喱牡蛎、咖喱羊肉等菜品。

咖喱也随着英国殖民全球的过程传播到了全世界。

而印度在这个过程中始终提供的就是一个卖点的角色。

三哥成为工具人,虽然他们的咖喱和英国的咖喱差别巨大,但是也架不住英国四处宣传这就是正宗印度味。

好故事才有好销量。

老伦敦的正宗,老北京的地道。

东西方两个大国的首都,喜好竟然如此相似。

果然,人类的本质就是复读。

7

如果了解了英国人的把戏,就会知道英国的咖喱也好,红茶也好都是包装出来的经济产物。

标准化带来的就是快餐文化,实际上是为了降低成本,同时提高销量。

而来自神秘东方都是广告的常见用语。

一个平时主要吃炸鱼和薯条的国家,在真正的饮食大国面前,其实是有点抬不起头的。

毕竟法国人、德国人、俄国人、意大利人和西班牙人都有着非常丰富的饮食文化。

英国人在美国人面前能装一装贵族风范,但是在老欧洲面前,英国人似乎还差了那么一点文化底蕴。

英国的咖喱粉就是一个低端货,配上龙虾才是高端。

所以,品味是由是食材决定的,不是由调料决定的。

就算不是咖喱的,是清蒸的、蒜蓉的、是炭烤的、是油炸的。

高级的是龙虾,并不是调味品。

但也有人会被英国人忽悠上当,比如另一个神秘的东方国度。

没错,就是日本。

站在明治维新的时代,日本的视角其实很好理解。

英国,日不落帝国,全球殖民,工业产值世界第一,经济发达疆土辽阔。

而日本,土地狭小,思想落后,文化闭塞,工业产值基本为0。

看着洋人的坚船利炮,自然会追求脱亚入欧,急于摆脱自身的传统文化,试图用欧洲的东西来走一走捷径。

这个时候,全面学习欧洲,尤其是英国,对日本来说就不仅仅是一句口号那么简单。

他们当然分不清欧洲内部的鄙视链到底是怎么一回事,但是站在他们的角度,英国,才是NO.1。

1872 年,明治天皇颁布的《肉食解禁令》破除了自天武天皇《肉食禁止令》以来日本人以米饭、鱼肉和蔬菜为基础的素食传统。

明治天皇认为日本国民必须进食肉类才能改善体格,追赶上欧美人的体魄,英国能成为NO.1肯定是因为吃得好,如此看来,学习英国人吃饭,就能掌握英国的秘密。

这就是印度人和日本人的差别。

同样是挨打,日本人想着如何吃饱了打回去。

而印度人则是靠饿死自己逼你投降。

所以日本人接过了英国人的咖喱产能,逼着自己吃咖喱。

但是很尴尬的是,日本人自己口味清淡,不爱辛辣,来自英国的咖喱并不受日本人欢迎。

地理位置上日本也不像印度那样潮湿闷热,需要靠咖喱这种东西来保存食物。

最重要的是日本在饮食上以猪肉和鱼肉为主,不存在掩盖膻味的需求。

19世纪 60 年代,日本谈判使节在远洋船上看到印度人用手抓咖喱饭进食时,还将其蔑视为下等人的食物。

说白了,日本人内心是抵制外来饮食的。但是上层社会并不抵制,为了推动日本全面学习欧洲,面包、冰淇淋、牛肉饼和咖喱等新奇食物抵达横滨港口,土豆、洋葱、胡萝卜这些外来食材也由此进入日本。

咖喱从未开化的食物变成了时髦的“代言人”、外国商行里的厨师是最早在日本制作咖喱料理的,他们沿袭了英式咖喱的制作,用浓郁咖喱蘸面包的吃法很快在日上层社会流行起来。

但对于日本老百姓来说,胃是骗不了人的,普通人无法接受洋食尤其是咖喱。

事情的变化发生在日本海军这里。

日本海军全面欧化从舰船技术、训练制度乃至官兵饮食,日本海军都在效仿英国。

包括饮食结构改善也要和英国人学习。

英国海军的咖喱肉是搭配面包食用,于是日本人也尝试将咖喱和主食混在一起实用。

当咖喱遇到了大米饭,日本人开启了新世界的大门。

在此之前,咖喱的解释权在印度人,在英国人手里。

而从这之后,咖喱的解释权在日本人手里。

日本人迅速改良了咖喱,降低了咖喱的辛辣程度,在其中加入果泥,形成独特的日式咖喱风味,将其从辣口变成了甜口。

同时也添加了小麦粉,让咖喱变成了浆糊状态,质地更粘稠。

与咖喱同煮的还有牛肉、胡萝卜、洋葱等外来蔬菜。

最后,土豆和炸猪排也加入到了咖喱饭的配料表里。

浆糊状的咖喱饭成为了日本的主流饮食之一,这种浆糊状的咖喱不仅仅符合日本的口感,同时也符合日本海军需求,因为糊状的盖饭在颠簸的甲板上不容易洒落。

20世纪50年代,日本食品公司生产的固体咖喱块,这就是我们最常见的咖喱的样子。这种固体咖喱在锅中煎一会就会融化,加入水之后就是咖喱汤。

1968年,日本大塚食品公司的即食咖喱又进一步提升了咖喱料理的便捷性,连杀菌袋包装一起在沸水中煮三五分钟就可以直接浇在饭上食用,非常适合懒得做饭的人。

比英国更夸张的是,日本人把咖喱上升到国民食物的地位,无论在餐饮店还是日本普通居民的餐桌,咖喱都跻身最受日本国民欢迎的食物。日本咖喱工业协会曾做过统计,日本人一年平均要消费 79 次咖喱饭,远超对寿司的消费次数

1982年,咖喱饭在日本被评为最受学生欢迎的食物。

世界最大咖喱连锁店,也是日本的Coco一番屋。

日本的连锁便利店,车站或者小吃摊都卖各种各样的咖喱饭。

写到这里,我饿了。

日本生产的块状咖喱很快就取代了英国的咖喱粉,随着日本的经济腾飞,日式咖喱粉也跟随日企的脚步走向全世界,日本人用他们的口味证明甜咖喱也有一席之地。

8

咖喱征服世界的脚步还没停。

从印度发明,英国创造,到日本改良,咖喱往往是以一种低调料理的姿态出现。

它们伴随着英国人和日本人走遍世界的脚步。

但是另一个咖喱消费大国,泰国,他们则是完全不同的策略。

作为一个旅游业和服务业是支柱型产业的国家,泰国没有什么走出去的策略,它只有走进来的方案。

同样是喜欢吃咖喱的国家,你翻开新闻,泰国人妖虽然变态,但是人畜无害。

再看看印度,不仅变态,而且人畜都容易遭到侵害。

这个时候你作为一个外国游客,想保住菊花是不爱吃辣就能做到的么?

只要不傻,就知道哪里才是旅游圣地了对吧?

泰国南部的饮食风格本来就受印度影响颇深。在古代泰国,南部人就喜欢食用咖喱,同时泰国人会在咖喱中加入椰奶,既有偏甜的口味,也有偏酸、偏辣的口味。

但印度人实在是太争气了,把咖喱餐饮大国的头衔硬生生让给了泰国。

每年进入泰国的游客数不胜数,这些人在泰国旅游结束后,一部分人会对人妖流连忘返,一部分人则对泰餐流连忘返。

于是大量游客将泰餐馆开回了自己的国家,泰国政府也鼓励本国居民出国开泰餐饭店赚外汇。

就如同沙县政府鼓励沙县人民开沙县小吃一样。

随着泰餐的扩展,咖喱征服世界的版图越来越大,但是在中国,日料店和泰餐店都无法让咖喱普及,真正让咖喱反杀出来的,是外卖。

因为外卖的出现,咖喱终于完成了它征服世界的最后一环,这块拼图也终于被拼上了。

在互联网外卖出现之前,速食食品,预装食品和外卖食品往往是指三种不同的食品。

速食食品,往往就是指方便面,面包,麻辣鸭脖子这些。

预装食品,往往就是牛奶,啤酒,蔬菜沙拉这些。

而外卖食品,还真的都是有门面的小饭店的后厨炒出来的,只是堂食和带走的区别。

但是互联网外卖的出现,让这三者的界限很巧妙的被打破了。

外卖的核心优势就仨,一个是制作要快,一个是价格要便宜,最后它吃起来得像一顿正经的饭。

方便面,听起来就像是坐火车时候才吃的。

牛奶和啤酒,这些也不是一顿正经的饭菜。

谁都知道饭店现炒现卖的最好吃,但是第一,它太慢了,出锅速度赶不上下单速度。第二,成本太高了,不仅仅要配食材,还要配个炒菜师傅。

这时候需要一种成本低,速成,最好还能掩盖食物变质味道的东西。

这三点一总结,就会发现咖喱块成为了最佳的选择。

日本人在改良咖喱块的时候,就想到了让这个东西加热既化,方便操作。

而英国人和印度人,都喜欢咖喱的防腐作用。

我不去评价外卖产业是否干净和合规,但是能掩盖腐败味道的东西,比如辣椒或者咖喱,它一定会成为黑心商人的首选。

所以消费者点开外卖平台,会发现没得选,全是辣味和咖喱味。

即使不爱吃辣和咖喱,但是往下比较就只剩方便面和面包了,此时咖喱盖浇饭也就成为无奈中最好的选择。

咖喱大概率也不会想到它能用这样一种方式攻克全球最后一块版图,但是意想不到的事情多了,印度人也想象不到外国人成天念叨的咖喱竟然和他们没什么大关系。

只能说,这就是全球化吧。

愿大家都能吃到便宜又卫生的咖喱饭。

愿大家,都有轻松快乐的生活。

全文参考资料来源如下:

【1】. 百变的咖喱,不变的传统.留学生.冰清

【2】 . 咖喱:舌尖上的美味.工会博览.王淼

【3】.  咖喱的生产技术.食品与发酵工业.杨荣华林、家莲、涂顺明

【4】.  咖喱完全问答录.食品与健康.章慧文

【5】 . 咖喱文化交融的味道.北京日报.艾栗斯

【6】 . 咖喱与印度菜.异域风情.俞元浩

【7】 . 漫话咖喱.世界知识.寿纪琛

【8】 . 五彩的金津咖喱.中国食品.林华

【9】 . 香料总汇——咖喱.上海调味品.李彪

【10】. 中国饮食文化对印尼的影响.厦门大学.英文静

【11】. “生”“熟”之间:咖喱在中国的在地化.思想战线.李静玮

【12】. 印度常见的“咖喱”,到底是啥玩意?为什么中国人很少吃?.小朋美食.小朋

【13】 . 我们听着欢乐颂的《咖喱咖喱》,评测完了35种咖喱. 吃喝实验室. 吃喝君 

【14】. 都说咖喱起源于印度,但那里并没有“咖喱”.知乎.三个料理人

【15】 . 咖喱到底是什么.张佳玮写字的地方.张佳玮

【16】 . 印度的咖喱,竟然是英国人发明的?.快速成为吃喝专家!.郑小塔

【17】 . 咖喱与抓饭——印度菜的环球之旅.世界-我们的故事.ag獭

【18】 . 日本咖喱只有150年历史,为什么能独树一帜?.湃客:食品与生活.王正全

【19】 . 咖喱的起源和历史.蛋蛋美食.春秀

【20】 . 日本咖喱和印度咖喱的区别之处有哪些?.知乎.伊斯特艾格

【21】 . 5分钟世界咖喱简史.就知道吃.吃君

转自:https://mp.weixin.qq.com/s/bJOdXoaIF-79Rx1upX23Qg

一例就“封城”!各地防疫政策突然掉头,未来到底该何去何从?

◎作者 | 木有药师

◎编辑 | 郑媛眉

◎来源 | 吴晓波频道(ID  wuxiaobopd)

既然选择动态清零,就该拿出最好的动态清零。
四月,让很多人的心态都变了。
 
大家都怕深夜一则通告,突然被封在家里。
 
一例就“封城”!各地防疫政策突然掉头,未来到底该何去何从?
 
2020年初,武汉“封城”两个半月。2021年末到2022年初,西安封闭式管理一个月。此刻,长春多数区域仍处于封闭式管理中,上海仍未解除全域静态管理,期限未知。
 
从武汉到西安,再到长春与上海,总有人问:疫情都两年多了,连抄作业都不会吗?
 
可是抄谁呢?
 
武汉封城那天,世界卫生组织驻华代表高力(Gauden Galea)曾在接受采访时说:封锁1100万人,在公共卫生史上前所未有。(The lockdown of 11 million people is unprecedented in public health history)
 
后来的第七次人口普查显示,武汉有1200万人,西安有1300万人,长春有900万人,上海有2500万人。
 
数千万人足不出户,食品、药品、日用品全靠外送解决,病人就医全靠急救车运送,人类社会并没有这样的经验。
 
在中国之外,没有作业可抄,在中国国内,至今也没有哪座城市交出了满分答卷。
 
我们究竟该抄哪一份作业?
 
一例就“封城”!各地防疫政策突然掉头,未来到底该何去何从?
 
每一个地方政府,都希望减少封控带来的影响,因此封控时间越短越好,区域越小越好,措施越轻越好。
 
今年以前,各地的解题思路是“逐步升级”。
 
2020年1月23日,武汉“封城”,只是“公交、地铁、轮渡、长途客运暂停运营;机场、火车站离汉通道暂时关闭。”居民可以走出家门,在小区内散步,也可以走出小区,到商店、超市采购物资。
 
2月11日,武汉发布第12号通告,“所有住宅小区实行封闭管理”。此时居民仍然可以外出购物,只是需要在小区出入口登记。

直至2月14日,武汉发出第24号通知,才开始严格执行“除就医以及防疫情、保运行等岗位人员外,其他居民一律不得外出”。
 
二十多天的间隔,给了民众储备物资的余裕,也让网购、团购、社区代购的渠道逐渐完善和普及。
 
待到3月19日,武汉无疫情小区“允许居民分批、分时段、分楼栋,在小区内进行非聚集性的个人活动”,社区内的便利店、药店、小菜场也在评估后恢复营业。
 
真正严令足不出户的封控,只有一个多月。

西安的情况类似,2021年12月21日,先是采取三区管控,封控区实行“足不出户、服务上门”;管控区实行“人不出区、严禁聚集”,原则上居家。
 
12月23日,西安开启封闭式管理,仍然不是油门踩到底,而是“每户家庭每2天可指派1名家庭成员外出采购生活物资”。
 
直至12月27日,防控加码,“除参加核酸采样外,坚持不出户、不聚集”。
 
待到2022年1月中旬,西安低风险地区的小区居民已经可以出门购物。
这样逐步升级管控措施,一方面是防疫部门需要时间来评估疫情,另一方面则是不希望对市民的生产生活造成太大影响。
可是到了上海这里,逐步升级却成了最受诟病的地方。
 
一方面造成疫情迁延日久,保供困难;另一方面7天之后又7天,7天之后又7天,防疫思路变幻,不断改写民众的心理预期,让很多人心态崩溃。
 
为什么会这样?
其中一个原因是,武汉面对的是新冠病毒原始毒株,R0值(基本传染数)1~2;西安面对的是德尔塔,R0值5~7;上海面对的是奥密克戎,R0值8~15。病毒的传染力越来越强。
昔日的上海高分作业,是靠快速流调找到所有密接、次密接,隔离管控,从而减少区域性封锁。
如今,这个办法追不上奥密克戎的传播速度。
一例就“封城”!各地防疫政策突然掉头,未来到底该何去何从?
 
另一本高分作业开始被广泛抄写。
今年2月到3月,深圳出现奥密克戎疫情,3月13日当地发布通告,将于3月14日至3月20日:
① 在全市范围内开展三轮全员核酸检测;
② 机关事业单位居家办公;
③ 非城市保障型企业停止运营或居家办公;
④ 全市公交、地铁停运;
⑤ 全市社区小区、城中村、产业园区实行封闭式管理。
一周之后,深圳基本实现社会面清零,有序回复生产生活。
七天时间速战速决,深圳经验提供了新的解题思路。面对奥密克戎,各地把这种思路用到了极致。
4月1日,滁州发布通告(当天发现1名无症状感染者和7名初筛阳性人员):自4月2日凌晨6:00起,对滁州市主城区暂时实施封控,实行静态管理。
五天后,4月6日,滁州主城区解除静态管理。
4月17日,芜湖发布通告:我市城区发现一例初检阳性感染者,……主城区暂时实施静态管理;并立即开展区域全员核酸检测。
一例就“封城”!各地防疫政策突然掉头,未来到底该何去何从?
芜湖市静态管理通告
 
此前,芜湖市委书记单向前曾说:要以“杀鸡用牛刀”“高射炮打蚊子”的超常举措切断传播链。
六天后,4月23日,芜湖市主城区除封控区、管控区外所有区域解除静态管理。
4月25日,包头市新增确诊病例3例,“全市进入静止状态,街道小区实行封闭管理”。
同日,保定市新增无症状感染者4例,“对主城区和新三区实行封控管理和全员核酸检测”。
除此之外,还有南通、邯郸、太原、西安、苏州、邵阳等多座城市陆续在主城区实施静态管理,网友称之为“一例封城”(当然,各地政府普遍表示临时社会面管控不等于“封城”)。
微博财经博主@Degg_GlobalMacroFin,通过一个简略的模型分析了为什么“一例封城”越来越普遍。
假设:① 市民平均10天核酸检测一次;② 病毒的基本传染数为8;③ 封控后病毒的基本传染数降为2;④ 运气一般(不会很早或很晚发现首例阳性)。
由此可以算出,采取“一例封城”措施,30天后的阳性人数约为4000人,而发现一例之后等3天再封控,30天后的阳性人数将是19000人。
 
一例就“封城”!各地防疫政策突然掉头,未来到底该何去何从?
红色为“一例封城”的病例增长曲线
假设里的数字可以调整——例如核酸检测频率越高,则最终阳性人数越少;病毒基本传染数越高,则最终阳性人数越多——但不影响结论:
既然选择清零,那就尽快清零,把对民生、对经济的影响降到最低。
一例就“封城”!各地防疫政策突然掉头,未来到底该何去何从?
  
除此之外,还有一份“抢答”作业,正在个别地区尝试,值得关注:
开启常态化核酸检测,提早发现新冠感染者。
4月26日,芜湖发布通告:市域内所有人员每5天进行1次核酸检测,……优化采样点设置,方便居民就近采样,免费提供检测服务。……无故不按规定频次进行核酸检测的人员,安康码使用将受限。
 
一例就“封城”!各地防疫政策突然掉头,未来到底该何去何从?
芜湖市常态化核酸检测通告
也就是说,如果你想使用健康码出入各类场所,乘坐公共交通,那么就要每5天进行一次核酸检测。政府出钱,免费检测。
在此之前,常态化检测往往只针对医护、物流等重点人群,或是只在特定时间段开展。全市、全民、全时段的核酸检测,尚不多见。
我们来算一笔账:
每5天检测1次,一年就是73次。
芜湖常住人口367.2万人,一年就是26800万人次。
安徽省多人混检目前每人份6元(国家医保局要求不高于8元,各省采购价格已经一降再降),一年的常态化核酸检测成本就是16亿元。
去年芜湖市的GDP为4300亿元,16亿元相当于当地GDP的0.37%。
如果常态化核酸检测能够更早发现感染者,更及时处置,避免大规模、长时间的封控管理,只要换来当地GDP多0.37%的增长,那么这笔财政支出就很划算。
更何况财政支出还有乘数效应,还可以避免封控带来的民生伤害。
在芜湖之外,有一些城市,开启了每48小时一次或是每周三次的常态化检测。这份作业值不值得抄,各地又是否有人力物力去抄,有待观察。
但这至少让我们感受到一种态度:既然选择动态清零,就该拿出最好的动态清零。

转自:https://mp.weixin.qq.com/s/1hv-osNgF3LYsbniU3yEpQ

警惕!Python 中少为人知的 10 个安全陷阱!

Python 开发者们在使用标准库和通用框架时,都以为自己的程序具有可靠的安全性。然而,在 Python 中,就像在任何其它编程语言中一样,有一些特性可能会被开发者们误解或误用。通常而言,只有极少的微妙之处或细节会使开发者们疏忽大意,从而在代码中引入严重的安全漏洞。

在这篇博文中,我们将分享在实际 Python 项目中遇到的 10 个安全陷阱。我们选择了一些在技术圈中不太为人所知的陷阱。通过介绍每个问题及其造成的影响,我们希望提高人们对这些问题的感知,并提高大家的安全意识。如果你正在使用这些特性,请一定要排查你的 Python 代码!

1.被优化掉的断言

Python 支持以优化的方式执行代码。这使代码运行得更快,内存用得更少。当程序被大规模使用,或者可用的资源很少时,这种方法尤其有效。一些预打包的 Python 程序提供了优化的字节码。

然而,当代码被优化时,所有的 assert 语句都会被忽略。开发者有时会使用它们来判断代码中的某些条件。例如,如果使用断言来作身份验证检查,则可能导致安全绕过。

def superuser_action(request, user):
    assert user.is_super_user
    # execute action as super user

在这个例子中,第 2 行中的 assert 语句将被忽略,导致非超级用户也可以运行到下一行代码。不推荐使用 assert 语句进行安全相关的检查,但我们确实在实际的项目中看到过它们。

2. MakeDirs 权限

os.makdirs 函数可以在操作系统中创建一个或多个文件夹。它的第二个参数 mode 用于指定创建的文件夹的默认权限。在下面代码的第 2 行中,文件夹 A/B/C 是用 rwx—— (0o700) 权限创建的。这意味着只有当前用户(所有者)拥有这些文件夹的读、写和执行权限。

def init_directories(request):
    os.makedirs("A/B/C", mode=0o700)
    return HttpResponse("Done!")

在 Python < 3.6 版本中,创建出的文件夹 A、B 和 C 的权限都是 700。但是,在 Python > 3.6 版本中,只有最后一个文件夹 C 的权限为 700,其它文件夹 A 和 B 的权限为默认的 755。

因此,在 Python > 3.6 中,os.makdirs 函数等价于 Linux 的这条命令:mkdir -m 700 -p A/B/C。有些开发者没有意识到版本之间的差异,这已经在 Django 中造成了一个权限越级漏洞(cve – 2022 -24583),无独有偶,这在 WordPress 中也造成了一个加固绕过问题。

3.绝对路径拼接

os.path.join(path, *paths) 函数用于将多个文件路径连接成一个组合的路径。第一个参数通常包含了基础路径,而之后的每个参数都被当做组件拼接到基础路径后。

然而,这个函数有一个少有人知的特性。如果拼接的某个路径以 / 开头,那么包括基础路径在内的所有前缀路径都将被删除,该路径将被视为绝对路径。下面的示例揭示了开发者可能遇到的这个陷阱。

def read_file(request):
    filename = request.POST['filename']
    file_path = os.path.join("var""lib", filename)
    if file_path.find(".") != -1:
        return HttpResponse("Failed!")
    with open(file_path) as f:
        return HttpResponse(f.read(), content_type='text/plain')

在第 3 行中,我们使用 os.path.join 函数将用户输入的文件名构造出目标路径。在第 4 行中,检查生成的路径是否包含”.“,防止出现路径遍历漏洞。

但是,如果攻击者传入的文件名参数为”/a/b/c.txt“,那么第 3 行得到的变量 file_path 会是一个绝对路径(/a/b/c.txt)。即 os.path.join 会忽略掉”var/lib“部分,攻击者可以不使用“.”字符就读取到任何文件。尽管 os.path.join 的文档中描述了这种行为,但这还是导致了许多漏洞(Cuckoo Sandbox Evasion, CVE-2020-35736)。

4. 任意的临时文件

tempfile.NamedTemporaryFile 函数用于创建具有特定名称的临时文件。但是,prefix(前缀)和 suffix(后缀)参数很容易受到路径遍历攻击(Issue 35278)。如果攻击者控制了这些参数之一,他就可以在文件系统中的任意位置创建出一个临时文件。下面的示例揭示了开发者可能遇到的一个陷阱。

def touch_tmp_file(request):
    id = request.GET['id']
    tmp_file = tempfile.NamedTemporaryFile(prefix=id)
    return HttpResponse(f"tmp file: {tmp_file} created!", content_type='text/plain')

在第 3 行中,用户输入的 id 被当作临时文件的前缀。如果攻击者传入的 id 参数是“/../var/www/test”,则会创建出这样的临时文件:/var/www/test_zdllj17。粗看起来,这可能是无害的,但它会为攻击者创造出挖掘更复杂的漏洞的基础。

5.扩展的 Zip Slip

在 Web 应用中,通常需要解压上传后的压缩文件。在 Python 中,很多人都知道 TarFile.extractall 与 TarFile.extract 函数容易受到 Zip Slip 攻击。攻击者通过篡改压缩包中的文件名,使其包含路径遍历(../)字符,从而发起攻击。

这就是为什么压缩文件应该始终被视为不受信来源的原因。zipfile.extractall 与 zipfile.extract 函数可以对 zip 内容进行清洗,从而防止这类路径遍历漏洞。

但是,这并不意味着在 ZipFile 库中不会出现路径遍历漏洞。下面是一段解压缩文件的代码。

def extract_html(request):
    filename = request.FILES['filename']
    zf = zipfile.ZipFile(filename.temporary_file_path(), "r")
    for entry in zf.namelist():
        if entry.endswith(".html"):
            file_content = zf.read(entry)
            with open(entry, "wb"as fp:
                fp.write(file_content)
    zf.close()
    return HttpResponse("HTML files extracted!")

第 3 行代码根据用户上传文件的临时路径,创建出一个 ZipFile 处理器。第 4 – 8 行代码将所有以“.html”结尾的压缩项提取出来。第 4 行中的 zf.namelist 函数会取到 zip 内压缩项的名称。注意,只有 zipfile.extract 与 zipfile.extractall 函数会对压缩项进行清洗,其它任何函数都不会。

在这种情况下,攻击者可以创建一个文件名,例如“../../../var/www/html”,内容随意填。该恶意文件的内容会在第 6 行被读取,并在第 7-8 行写入被攻击者控制的路径。因此,攻击者可以在整个服务器上创建任意的 HTML 文件。

如上所述,压缩包中的文件应该被看作是不受信任的。如果你不使用 zipfile.extractall 或者 zipfile.extract,你就必须对 zip 内文件的名称进行“消毒”,例如使用 os.path.basename。否则,它可能导致严重的安全漏洞,就像在 NLTK Downloader (CVE-2019-14751)中发现的那样。

6. 不完整的正则表达式匹配

正则表达式(regex)是大多数 Web 程序不可或缺的一部分。我们经常能看到它被自定义的 Web 应用防火墙(WAF,Web Application Firewalls)用来作输入验证,例如检测恶意字符串。在 Python 中,re.match 和 re.search 之间有着细微的区别,我们将在下面的代码片段中演示。

def is_sql_injection(request):
    pattern = re.compile(r".*(union)|(select).*")
    name_to_test = request.GET['name']
    if re.search(pattern, name_to_test):
        return True
    return False

在第 2 行中,我们定义了一个匹配 union 或者 select 的模式,以检测可能的 SQL 注入。这是一个糟糕的写法,因为你可以轻易地绕过这些黑名单,但我们已经在线上的程序中见过它。在第 4 行中,函数 re.match 使用前面定义好的模式,检查第 3 行中的用户输入内容是否包含这些恶意的值。

然而,与 re.search 函数不同的是,re.match 函数不匹配新行。例如,如果攻击者提交了值 aaaaaa n union select,这个输入就匹配不上正则表达式。因此,检查可以被绕过,失去保护作用。

总而言之,我们不建议使用正则表达式黑名单进行任何安全检查。

7. Unicode 清洗器绕过

Unicode 支持用多种形式来表示字符,并将这些字符映射到码点。在 Unicode 标准中,不同的 Unicode 字符有四种归一化方案。程序可以使用这些归一化方法,以独立于人类语言的标准方式来存储数据,例如用户名。

然而,攻击者可以利用这些归一化,这已经导致了 Python 的 urllib 出现漏洞(CVE-2019-9636)。下面的代码片段演示了一个基于 NFKC 归一化的跨站点脚本漏洞(XSS,Cross-Site Scripting)。

import unicodedata
from django.shortcuts import render
from django.utils.html import escape

def render_input(request):
    user_input = escape(request.GET['p'])
    normalized_user_input = unicodedata.normalize("NFKC", user_input)
    context = {'my_input': normalized_user_input}
    return render(request, 'test.html', context)

在第 6 行中,用户输入的内容被 Django 的 escape 函数处理了,以防止 XSS 漏洞。在第 7 行中,经过清洗的输入被 NFKC 算法归一化,以便在第 8-9 行中通过 test.html 模板正确地渲染。

templates/test.html

<!DOCTYPE html>
<html lang="en">
<body>
{{ my_input | safe}}
</body>
</html>

在模板 test.html 中,第 4 行的变量 my_input 被标记为安全的,因为开发人员预期有特殊字符,并且认为该变量已经被 escape 函数清洗了。通过标记关键字 safe, Django 不会再次对变量进行清洗。

但是,由于第 7 行(view.py)的归一化,字符“%EF%B9%A4”会被转换为“<”,“%EF%B9%A5”被转换为“>”。这导致攻击者可以注入任意的 HTML 标记,进而触发 XSS 漏洞。为了防止这个漏洞,就应该在把用户输入做完归一化之后,再进行清洗。

8. Unicode 编码碰撞

前文说过,Unicode 字符会被映射成码点。然而,有许多不同的人类语言,Unicode 试图将它们统一起来。这就意味着不同的字符很有可能拥有相同的“layout”。例如,小写的土耳其语 ı(没有点)的字符是英语中大写的 I。在拉丁字母中,字符 i 也是用大写的 I 表示。在 Unicode 标准中,这两个不同的字符都以大写形式映射到同一个码点。

这种行为是可以被利用的,实际上已经在 Django 中导致了一个严重的漏洞(CVE-2019-19844)。下面的代码是一个重置密码的示例。

from django.core.mail import send_mail
from django.http import HttpResponse
from vuln.models import User

def reset_pw(request):
    email = request.GET['email']
    result = User.objects.filter(email__exact=email.upper()).first()
    if not result:
        return HttpResponse("User not found!")
    send_mail('Reset Password','Your new pw: 123456.''from@example.com', [email], fail_silently=False)
    return HttpResponse("Password reset email send!")

第 6 行代码获取了用户输入的 email,第 7-9 行代码检查这个 email 值,查找是否存在具有该 email 的用户。如果用户存在,则第 10 行代码依据第 6 行中输入的 email 地址,给用户发送邮件。需要指出的是,第 7-9 行中对邮件地址的检查是不区分大小写的,使用了 upper 函数。

至于攻击,我们假设数据库中存在一个邮箱地址为 foo@mix.com 的用户。那么,攻击者可以简单地传入 foo@mıx.com 作为第 6 行中的 email,其中 i 被替换为土耳其语 ı。第 7 行代码将邮箱转换成大写,结果是 FOO@MIX.COM。这意味着找到了一个用户,因此会发送一封重置密码的邮件。

然而,邮件被发送到第 6 行未转换的邮件地址,也就是包含了土耳其语的 ı。换句话说,其他用户的密码被发送到了攻击者控制的邮件地址。为了防止这个漏洞,可以将第 10 行替换成使用数据库中的用户邮箱。即使发生编码冲突,攻击者在这种情况下也得不到任何好处。

9. IP 地址归一化

在 Python < 3.8 中,IP 地址会被 ipaddress 库归一化,因此前缀的零会被删除。这种行为乍一看可能是无害的,但它已经在 Django 中导致了一个高严重性的漏洞(CVE-2021-33571)。攻击者可以利用归一化绕过校验程序,发起服务端请求伪造攻击(SSRF,Server-Side Request Forgery)。

下面的代码展示了如何绕过这样的校验器。

import requests
import ipaddress

def send_request(request):
    ip = request.GET['ip']
    try:
        if ip in ["127.0.0.1""0.0.0.0"]:
            return HttpResponse("Not allowed!")
        ip = str(ipaddress.IPv4Address(ip))
    except ipaddress.AddressValueError:
        return HttpResponse("Error at validation!")
    requests.get('https://' + ip)
    return HttpResponse("Request send!")

第 5 行代码获取用户传入的一个 IP 地址,第 7 行代码使用一个黑名单来检查该 IP 是否为本地地址,以防止可能的 SSRF 漏洞。这份黑名单并不完整,仅作为示例。

第 9 行代码检查该 IP 是否为 IPv4 地址,同时将 IP 归一化。在完成验证后,第 12 行代码会对该 IP 发起实际的请求。

但是,攻击者可以传入 127.0.001 这样的 IP 地址,在第 7 行的黑名单列表中找不到。然后,第 9 行代码使用 ipaddress.IPv4Address 将 IP 归一化为 127.0.0.1。因此,攻击者就能够绕过 SSRF 校验器,并向本地网络地址发送请求。

10. URL 查询参数解析

在 Python < 3.7 中,urllib.parse.parse_qsl 函数允许使用“;”和“&”字符作为 URL 的查询变量的分隔符。有趣的是“;”字符不能被其它语言识别为分隔符。

在下面的例子中,我们将展示为什么这种行为会导致漏洞。假设我们正在运行一个基础设施,其中前端是一个 PHP 程序,后端则是一个 Python 程序。

攻击者向 PHP 前端发送以下的 GET 请求:

GET https://victim.com/?a=1;b=2

PHP 前端只识别出一个查询参数“a”,其内容为“1;b=2”。PHP 不把“;”字符作为查询参数的分隔符。现在,前端会将攻击者的请求直接转发给内部的 Python 程序:

GET https://internal.backend/?a=1;b=2

如果使用了 urllib.parse.parse_qsl,Python 程序会处理成两个查询参数,即“a=1”和“b=2”。这种查询参数解析的差异可能会导致致命的安全漏洞,比如 Django 中的 Web 缓存投毒漏洞(CVE-2021-23336)。

总结

在这篇博文中,我们介绍了 10 个 Python 安全陷阱,我们认为开发者不太了解它们。每个细微的陷阱都很容易被忽视,并在过去导致了线上程序的安全漏洞。

正如前文所述,安全陷阱可能出现在各种操作中,从处理文件、目录、压缩文件、URL、IP 到简单的字符串。一种常见的情况是库函数的使用,这些函数可能有意想不到的行为。这提醒我们一定要升级到最新版本,并仔细阅读文档。在 SonarSource 中,我们正在研究这些缺陷,以便将来不断改进我们的代码分析器。

英文作者:Dennis Brinkrolf,译者:豌豆花下猫

英文:https://blog.sonarsource.com/10-unknown-security-pitfalls-for-python

转自:https://mp.weixin.qq.com/s/4ZjsOv1XlgJU0iXtjBorKg

房价才是最好的避孕药

高房价下,有房的人也不一定愿意多生

昨天一篇报道《2022年的产房静悄悄》火了,此文提到,2021年,1062万个婴儿在中国降生,比以饥荒载入史册的1960年还少了340万个,这是新中国成立以来出生人数最少的一年,也是2016年全国出生人口数量达到新世纪顶峰后连续第五年下降。

这也不是什么难以预料的事。

早在《为什么网民对三孩政策态度消极》中我们就有提到,虽然“二孩政策”的渐进式放开使得我国短时间内生育率有了回升,但2018年起,国内的人口数量还是呈现了“跳崖”式的下滑。

从国内总生育率来看,2020年每位妇女平均生育数降到了1.7人;在七普中,2020年育龄妇女的总和生育率预估值更是降到1.3人,这意味着育龄妇女的生育率进一步降低。

房价才是最好的避孕药

数据来源:wind

在国内生育率或生育意愿降低的背后,医疗、教育、住房都是至关重要的推手,尤其是住房这一块。虽然现如今古代的一些传统观念的影响力有所减弱,但“安居乐业”的观点仍刻在许多中国人的思想中。

“不安居,则不乐育”,是当今时代下住房与生育两者关系的一个概括。房价的升高使得许多人都买不起房子,在房子的压力下,“想生不敢生”的人普遍存在。

谈到住房压力这一块,以前在计划经济体制下,国家以“暗贴”的形式给予职员补助,使职员支付的租金远低于住房本身成本。这一时期,国家或单位投资建设、购买住房并无偿分配给职工的操作,大大减少了居民的住房压力。

但随着社会主义市场经济体制下货币化分房的出现,职工自身得以市场价格才能购买到房子,而“炒房”的出现又导致房价逐步升高,居民背负的购房压力越来越大,在大城市中拥有一套房子不再是易事。

从以往数据中可看出,我国70个大中城市新建商品住宅价格大部分月份都在上涨,其中又以一线城市的波动最大。

房价才是最好的避孕药

数据来源:Wind

在这样的高房价下,即使推行了二孩政策、三孩政策,生育率也并未取得明显的提高效果。

在单独二孩政策实施后,2013年-2017年国内平均人口出生率为12.43%,和未实施该政策前基本持平。全面放开二孩政策后,2018年-2019年生育率反而下降;三孩政策目前也未取得有效的成果。

面对这种情况,国内不少学者展开了专门的研究,结果表示住房状况及房价变动都会显著地影响居民生育意愿,最后表现为生育率的变动,故而才有“不安居,则不乐育”的概括。

房价的上涨会导致无房者生育率的下降,但房价上涨也会带动住房价值的增加,对有房者的生育意愿可能会产生正向影响。不过,有房就会多生了吗?也不一定,这可能得看拥有多少套房了。

2017年就有研究表明,房价的升高也会降低首次置业家庭的二孩生育意愿。对于这种现象,或许可用挤出效应与财富效应间的比较来解释。

在房价上涨时,无房者或只有1个房子的群体往往会面临更大的物价水平支出,从而挤占了原本的生育支出空间。

对于只有1个房子的群体而言,房子更多的是居住属性而非金融属性,房价上涨带来挤出效应大于财富效应,许多青年会不愿生或不愿多生。

或许对于拥有2套房以上的群体,房价上涨才能带来实际的、更高的财富效应,能够支付多娃下的生育成本。

公共服务资源与住房挂钩也会影响生育意愿

除是否拥有住房外,公共服务资源与住房挂钩的现象很大程度上也影响了青年群体的生育意愿。

近年来,除金融与居住属性外,我国的住房话题还围绕其他附加属性展开。

如房子与教育资源挂钩,上重点学校得购买相应学区房;有些城市的落户与住房有关,而是否持有户口会影响到能否公平或更大范围地享受优质医疗资源。

在国内尚未全面放开落户限制时,拥有住房所有权仍是获得城市户籍、均等享受医疗、教育、养老等公共服务资源的重要途径。伴随附加属性的存在,无房青年群体想要生育怕也不能安心。

就拿教育这一块来讲,孩子能接受公平的、优质的教育资源是每个父母所希望的。在孩子成年后,能够获取更高的收入以弥补生养期间的支出,这在经济意义上才是值得的。

1957年,美国一位经济学家将孩子比作“耐用消费品”,父母“购买”这一“产品”会面临许多成本,包括在子女身上的生育、抚养资金等直接成本,还有为养育孩子而放弃的时间成本、工作收入等间接成本。

根据著名人口经济学家、美国芝加哥大学教授——贝克尔的质量-数量理论,孩子的质量要求远高于数量要求。而优质教育资源的获得则在孩子的高质量上起着至关重要的作用。

所以在养育一个“高质量”孩子前,父母会事先考虑孩子是否能获得足够的优质教育资源以换取将来的高回报,以此抵消养育成本。

房价才是最好的避孕药

故当住房与优质教育资源挂钩时,青年群体会优先考虑住房的获取。而当青年群体优先考虑住房问题时,也必然会花费更多地精力与金钱在住房上,从而挤占对生育问题的关注与投入强度。

当然,这些担忧基本上是对无房群体“不想生”或“不敢生”的一个分析。对于多房群体而言,即使有了房子进而能获取优质教育资源,但随着养育孩子的数量越多,其能从中获得的“边际效用”越小,生育更多的孩子对他们的吸引力也没有那么大了。

再来到医疗这一块,现在适龄生育的群体基本是80后、90后、00后。对于这一群体尤其是90后、00后而言,养生在他们的生活中更为重要,能否顺利获得所在地医疗资源也会成为其生活的担忧因素。

如女性若想在一些城市接种九价HPV疫苗,最好还是成为当地的常住居民或拥有房产证,否则很难进行该疫苗的接种。

所以当医疗受住房影响时,青年群体也会把关注度优先放在住房上,尤其在生育意愿普遍不强的90后、00后中,对住房的关注与支出越大,则在生育上的支出、精力只会更少。

对于这些问题,虽然多地已取消学区房与教育资源挂钩,努力让每个人都能获得公平的医疗资源,但在许多大城市中,庞大的人口与有限的公共服务资源始终存在不完全匹配的矛盾,很难做到让所有的群众都能获得公平的待遇,还是会影响到青年的生育意愿。

当城市公共资源服务供给受限时,往往是流动人口先受到冲击,与有房或多房青年的生育意愿差距则会进一步加大。

焦虑感与正能量感受都值得重视

房子为什么会影响青年的生育意愿,其中一个因素还是因为是否拥有住房、房价的波动会带给他们不同程度的生育焦虑,也影响他们的幸福感、公平感、认同感等正能量感受。

生育焦虑指想要生育的群体面临高昂生育成本时,形成的“想生而不敢生”的焦虑心态。缓解有生育意愿群体的“生育焦虑”,比攻克那些压根不想生孩子的“丁克”族来说,更有利于提高我国的生育率。

生育焦虑很大程度上由住房问题导致。

虽然目前国内青年对租房生活的接受力度在增大,但事实上,大多数青年还是想拥有自己的一套房子。

房价才是最好的避孕药

所以当高昂的购房成本促使这些青年将更多精力、金钱投入到住房时,他们往往会无暇审视生育问题,即使认真思考后,最后也会因不菲的生育成本而产生担忧心理,引发“不敢生”或“晚点生”的生育焦虑。

另外,是否拥有自有住房也会影响到他们的幸福感、认同感及公平感,进而影响到他们的消极情绪、生育焦虑与生育意愿。

1983年,Isen 和Patrick两人曾提出“情绪持续假说”,这一假说认为个体会为了维持自身情绪稳定而尽量避免各种风险的发生。

在生育这一块,则表现为充满幸福感的夫妇会为保证家庭的稳固状态、幸福感、日后的老年生活而选择养育孩子。所以,重视青年群体的幸福感会影响他们的生育意愿,幸福感越强,其生育意愿也会增强。

再拿阶层认同感来说,马斯洛需求层次理论表示,在个体满足生理需要、安全需要后,归属与爱的需要就放到个人眼前。在如今这个社会,“孩子”似乎成了一种“奢侈品”,对青年群体来说,寻求社会的归属感、认同感似乎更迫切、更重要。

而一个人是否拥有房产及房产面积、数量、档次已成为判断一个人社会与经济地位的重要指标。居民若在本地拥有自有住房,人均面积越大,或其住宅坐落在更繁华的片区,往往象征着更高的经济地位,获得的阶层认同感也会越高。

当这些群体在城市中获得认同感后,其幸福感就会更强,产生的正面情绪会有效地缓解生育焦虑的问题,会更多地思考且花费金钱与精力去“购买”孩子这种“奢侈品”,表现为更高的生育意愿与生育率。

谈到公平感,可以试想一下,当一些高收入群体能通过投资、再投资等“钱生钱”的途径获得更多资金,随随便便就能买下一套房,而另一群青年只能通过“社畜”般的生活才能满足日常需要,背上几十年房贷才能拿下一套完全属于自己的房子时,他们对社会公平的感知就会被削弱。

当人不自觉进行比较而发现受到不公对待时,消极情绪油然而生,幸福感会削弱,生育焦虑更强,生育意愿也会降低。

当住房能带来幸福感等正能量时,个体都会去争取得到属于自己的房子。而当有限的金钱与精力分给了能带来更多归属感、认同感、幸福感的住房后,能分给生育这一块的就更少了。这时非得逼着提高青年的生育率的话,只会造成生育焦虑。

提高生育率,各方能做什么?

国内老龄化加重、生育率降低的现象促使国家将提高生育率这件事摆在了十分重要的层面。

在生育这一块,虽然有不想生的人,但背后更多的是不敢生的人群,只因房子带来的压力实在太大了。个人能做的就是拼命地工作,提高自身收入,但房价就在那里,期望它骤跌下去,那可能只能在梦里了。

当然,盼着房产行业尤其是大城市中的房价短时间内主动地大规模、大幅度下降也不现实。这种宏观经济的调控更多地还要依赖于政府的政策调节方向与力度。

自“炒房”导致房价上涨过快后,为稳定经济发展,国家也出台了不少的维稳措施,包括限定贷款首付比例、增加住房有效供给、管控房产税收等。

目前国家也坚持着“住房不炒”的维稳理念,所以虽然近期多个城市的房价有所下跌,但这一基调也意味着国内的房价短时间内不会过高上涨,也不会过度下跌。

房价才是最好的避孕药

不过,虽然在房价的降低层面上政府能改动的不大,但目前针对住房这一块,国家正在不断地推动共有产权房、保障性租赁住房的建设以及租购同权的实施,这些举措将会有效地帮助一些青年群体缓解因住房而产生的“生育焦虑”。

在共有产权房下,当中低收入群体购房困难时,可选择按个人与政府的出资比例共同拥有房子的产权。在个人有足够的资金后,再按市场或评估价从政府手中把另一部分产权给购买过来。

和政府“合作”,显然也会安心得多。在共有产权房下,住房带来的焦虑能够得到很好的缓解,其带来的生育焦虑自然也会有所减少。

目前国内的共有产权住房已在试点阶段,北京、上海、深圳、成都、淮安、黄石等多个城市已出台相关政策。虽然还未全面推广,但好歹也是个可行的解决方案。

另外,保障性租赁住房的推广也能缓解青年群体的租房压力,减缓住房资金的支出,能促使青年群体将更多的收入花费在生育上。

且在“租购同权”的实施下,即使是租房的群体,也能平等地获取医疗资源、教育资源,公共服务资源与住房挂钩带来的资源不均等担忧也可能得到缓解。

2017年,广州率先提出了“租购同权”,也在这一年里,“租购同权”与“共有产权房”成为了年度媒体十大新词语。

在租购同权下,符合条件的承租人子女能够享有就近入学等公共服务权益。虽然这一举措在大规模人口流动的城市中很难完全落地,但起码给予了部分地区的后代公平获得公共资源的机会,他们有更大的希望实现未来更高的收入,来弥补高昂的生育成本,而这也代表着城市开始变得友善。

总之,无论政府出台了什么政策措施,最后能不能生、敢不敢生、愿不愿生还得回到如何切实解决青年群体的生育焦虑层面上。

在北上广深的养娃成本超过200万的时代,降低生育成本,才能缓解生育焦虑,提高生育意愿与生育率。而不解决高房价、无房子的问题,要普遍提高青年群体的生育意愿恐怕还是难事。

上下滑动查看参考资料:

宋德勇,刘章生,弓媛媛.房价上涨对城镇居民二孩生育意愿的影响[J].城市问题,2017(03):67-72.

李宝礼,邵帅.不安居,则不乐育:住房状况与青年人口生育意愿研究[J].中国青年研究,2022(03):53-62+104.

张银锋.青年两孩生育意愿及其子女成本收益分析[J].中国青年研究,2017(05):66-73.

李勇辉,沈波澜,李小琴.未能安居,焉能育儿?——住房对育龄人群生育意愿的影响研究[J].中国经济问题,2021(02):68-81.

宋德勇,刘章生,弓媛媛.房价上涨对城镇居民二孩生育意愿的影响[J].城市问题,2017(03):67-72.

张海东,杨城晨.住房与城市居民的阶层认同——基于北京、上海、广州的研究[J].社会学研究,2017,32(05):39-63+243.

王先柱,王敏.改革住房制度 让全体人民住有所居——住房增强居民幸福感的差异性研究[J].商业研究,2018(08):12-21.

张雨,朱亚鹏.青年购房压力对生育焦虑的影响路径研究——以重庆市为例[J].暨南学报(哲学社会科学版),2022,44(02):22-38.

保障性住房供给放量 远大住工迎接市场新机遇_中国日报

http://ex.chinadaily.com.cn/exchange/partners/82/rss/channel/cn/columns/6ldgif/stories/WS625fd202a3101c3ee7ad171a.html

超70城调控房地产政策,未来房价怎么走?|房地产市场_新浪财经_新浪网 https://finance.sina.com.cn/jjxw/2022-04-21/doc-imcwiwst3150878.shtml

年度媒体十大新词语公布:租购同权、雄安新区、灰犀牛等入选_舆论场_澎湃新闻-The Paper

https://www.thepaper.cn/newsDetail_forward_1905348

2022年的产房静悄悄_新浪财经_新浪网 https://finance.sina.com.cn/chanjing/cyxw/2022-04-27/doc-imcwipii6687913.shtml

转自:https://mp.weixin.qq.com/s/7yTgJxQpeg_FdAThbTaRFA

同济大学的学生不能忍了

原创:小涂

来源:为你写一个故事(ID:raistlin2017)

01.

前几天收到粉丝私信,说想让我们关注一下#同济大学猪肉刺身#事件。

同济大学的学生不能忍了

他表示现在同济大学的学生们已经封了20多天。

原本大家都认为疫情期间能吃的上饭就很好了,没想到学生都纷纷反映这段时间里吃的学校盒饭有严重的卫生问题。

以下图片相当重口!

大家酌情观看,尤其注意不要在吃饭的时候点开。

先是不少人都怀疑吃到了“猪乳头”:

同济大学的学生不能忍了

还有人发现猪肉上有奇怪的白点:

同济大学的学生不能忍了

经过一番鉴定,生科大佬认为这是猪肉绦虫的卵。

绦虫是最危险的寄生虫之一。这种寄生虫可寄生在人的大脑、眼睛、肠道等器官,长在眼睛就会失明,常在大脑上则会引发癫痫。

同济大学的学生不能忍了

 

在微博话题#同济大学猪肉刺身#,不少学生都“晒”出了这几天的伙食。

同济大学的学生不能忍了

 

和如此重口的变质猪肉相比,猪毛都没处理干净的都算轻的了。

同济大学的学生不能忍了

同济大学的学生不能忍了

时不时还会有蜗牛和昆虫“加餐”给你来一个意外惊喜:

同济大学的学生不能忍了

 

同济大学的学生不能忍了

不难想象,此时此刻学生们的崩溃。

不吃就会饿死,哪怕是吃了之后“肚子有点翻滚”也只好含泪咽下去。

 

同济大学的学生不能忍了

隔离的时间长了,不只是对学生的心理造成影响,这下连健康都无法保障的话,眼看着解封还遥遥无期,大家都纷纷表示破防了。

同济大学的学生不能忍了

学生们能理解志愿者很辛苦,也知道食堂的叔叔阿姨们不容易,他们仅仅想知道的是为什么学校会出现这个问题。然而等到的却是每天领导学校例行报告的场面话。

同济大学的学生不能忍了

终于,随着事情在社交媒体上不断发酵,很快上海高校后勤备货管理中心就发布了公告,表示这是来自上海璟年食品有限公司的,为了保障学生的安全决定取消上海联新食品有限公司的供货资格。

同济大学的学生不能忍了

公告一出,网友们顺藤摸瓜,发现生产商上海璟年食品有限公司过去就曾数次受到过行政处罚。

 

同济大学的学生不能忍了

同济大学的学生不能忍了

而供货商的上海联新食品有限公司更是一家仅有一人的皮包公司。

同济大学的学生不能忍了

同济大学的学生不能忍了

究竟是哪个环节被钻了漏洞,才让两家公司成为了学校食堂的供货商,我们不得而知。我不理解明明有那么多正规的、不失信的、靠谱的大企业不用,为什么一定要用这些看起来就相当可疑甚至背有多条处罚记录的企业作为保供企业?

随后,一名同济大学生发现生产厂老板竟是自己同小区的邻居。

同济大学的学生不能忍了

按照生产厂家的话,有猪乳头是正常现象,没有质量问题。

同济大学的学生不能忍了

厂商还玩起了文字游戏,表示公告里说的只是“有学生反映有质量问题”,而不是“肉有质量问题”。之所以品相这么差,是因为卖出去才十几块钱一斤”的“低端货”。

同济大学的学生不能忍了

事情到了这个地步,已经很难说清是哪个环节出了问题了(甚至可能每个环节都有问题),但我想这件事情给同济学子们留下的心理阴影,或许要用上个十几年才能洗去。

02.

对于在网上已经沸沸扬扬的同济猪肉刺身事件,学校方面的表态则是:网上不少的图片都是套用了其他高校的图片,故意抹黑学校。

同济大学的学生不能忍了

 

当然,我们不否认确实有一些“张冠李戴”的内容,比如之前华师大的“豪猪肉”就被网友传成同济大学的。

同济大学的学生不能忍了

如果只是对谣言进行整治,那无可厚非。但根据网上流出的聊天记录看,学校还在严打各种“喊楼”和抗议活动。

同济大学的学生不能忍了同济大学的学生不能忍了

同济大学的学生不能忍了

看着他们的推论,你会觉得自己格局确实小了:

同济大学的学生不能忍了

学生们的饮食健康问题得不到保障,想要发声又遭遇“堵嘴”,开头的私信中粉丝也表示部分辅导员说在讨论这个问题就要报警来抓学生。

同济大学的学生不能忍了

每次领导开会都低头念通稿,不理会学生的诉求。

终于在一群忍无可忍的学生中,跳出了一个发声的人:

同济大学的学生不能忍了

这位同学在领导开会想要提问的时候惨遭“闭麦处分”,一怒之下他在亮出了这样一张PPT:

同济大学的学生不能忍了

不少学生都表示对这位敢于发声的同学表示敬佩。

同济大学的学生不能忍了 

但同样也有不少人对这位猛士的开团行为表示担忧。

同济大学的学生不能忍了

或许热血的大学生们真的比大家想象的要多得多吧。至于所谓的起义,有人表示这是谣言。

同济大学的学生不能忍了

 

只愿“为众人抱薪者,不可使其冻毙于风雪”。

03.

这段爆炸性发言引发了许多连锁反应。

以此为素材,学生们举办了一个设计大奖赛。

同济大学的学生不能忍了

下面选取一些作品供大家观赏:

学生们用海报的形式记录了这一“历史性事件”:

 

同济大学的学生不能忍了

同济大学的学生不能忍了

同济大学的学生不能忍了

 

他们恨不得直接给大学换个校徽:

 

同济大学的学生不能忍了

同济大学的学生不能忍了

同济大学的学生不能忍了

上头在“堵嘴”又如何?只要还能用到这两个颜色,我们就能用自己的所学专业传递出相同的信息:

 

同济大学的学生不能忍了

同济大学的学生不能忍了

在创意分赛区各种古灵精怪的作品更是层出不穷:

 

同济大学的学生不能忍了

 

同济大学的学生不能忍了

同济大学的学生不能忍了

再这样下去,我想真的有可能120周年校庆的时候学生要搞出这些周边来。

 

同济大学的学生不能忍了

除了同济学子之外,更多的网友们也加入了表情包的创作之中:

同济大学的学生不能忍了

我还看到有位网友根据此次事件来填词,倾情演唱了一首《孤勇者》:

04.

我有时候觉得这几年读大学的人真是倒了大霉了。

常常有人说“青春才几年,疫情就三年”,居家封闭的我们都能感受到生活的不便,更何况是集体生活的大学生们。

他们不仅仅是上厕所要打报告:

同济大学的学生不能忍了

甚至被封后就没洗过澡:

同济大学的学生不能忍了

好不容易能用一顿饭菜抚平内心的伤痛,却还要每天吃到这样的盒饭。

不止国内难,留学生也难。

之前一直交着天价学费上网课觉得自己像个冤大头。

现在好不容易可以去上课了,但出去就很难回来了。

回国机票出去的机票统统是天价。

遥遥无期的解封日期,

对虚度青春的空虚,

以及对未来的不安填满了他们的内心。

我知道,现在不少网友会觉得当下大学生的抱怨特别“矫情”,在网上崩溃大哭也是在说他们心理承受力不够。还有人觉得他们现在叫苦连天的事情其实多半是忍一忍就能过去的了。

同济大学的学生不能忍了

就连在很多大学生分享自己破防瞬间的文章下面,也能看到有人给大家灌鸡汤:

同济大学的学生不能忍了

我觉得没有亲历过这段生活的人,是没有资格劝别人大度的。

同济大学的学生不能忍了

疫情影响的不只是大学生们的日常生活,它真的让很多人失去了人生最宝贵的一段经历。

看到网上有一段话这么说:

“可能几年后或者很多年后疫情可以平息,但是这几年我错过的这么多都再也弥补不回来了,而且任何一个不是这个时期的大学生都永远无法共情我的痛苦,谁都不能”

现在回想起来,我最快乐的日子就是大学里那段时间。

社团活动、有意思的选修课、踢足球、300块钱就能和同学出去旅游爬野山、排练话剧。

对我来说,上大学的过程比最后那张文凭要有意义。

同济大学的学生不能忍了

无法共情的话,也没必要说别人矫情吧。

我认为任何时候大家都不应该过度苛责处在病毒中心的人。

未来会怎么样,谁都不知道。

只能衷心地希望明天会发生一点转机,让他们的青春能在疫情肆虐后延续。

明天有没有希望谁都不知道,但如果不相信的话,可能就真没有了。

-END-

 

转自:https://mp.weixin.qq.com/s/4CkdjtMY4Lb1EPl8k6Hbtw