在某些情况下,将每个组合列入白名单是不切实际的,不过有些安全平台仍然希望重定向用户并将其保留在域内某些边界内。当外部提供的值遵循特定模式(例如16个字符的字母数字字符串)时,最好这样做。字母数字字符串是理想的,因为它们不包含任何可能引入其他攻击的特殊字符,例如目录/路径遍历(依赖于诸如...和向后/向前斜杠之类的字符)。
例如,安全平台可能希望在用户登录后将其重定向回电子商务网站上的特定产品。由于电子商务网站对每种产品都有唯一的字母数字值,因此安全平台可以通过始终根据RegEx白名单验证外部输入来实现安全重定向。在本文所讲的样本在,研究者用的是productId变量。
- //Configure your whitelist
- var baseHostname = "https://example.com";
-
- app.get('/login', function (req, res, next) {
- productId = (req.query.productId || '');
- whitelistRegEx = /^[a-zA-Z0-9]{16}$/;
-
- if(productId) {
-
- //Validate the productId is alphanumeric and exactly 16 characters
- if(whitelistRegEx.test(productId)) {
-
- res.redirect(encodeURI(baseHostname + '/item/' + productId));
- }else{
-
- //The productId did not meet the RegEx whitelist, so return an error
- res.send('Invalid product ID');
- }
- }else{
-
- //No productId was provided, so redirect to home page
- res.redirect('/');
- }
- });
最后,安全平台发出警告,警告用户他们正在被自动重定向是值得重视的。如果安全平台有意将用户重定向到域外,则可能需要在流程中创建一个中间页面,该页面会发出如下警告,并包含用户要重定向到的URL。

注:本文是以Hailstone为例进行讲解的,Hailstone是一个应用程序安全平台,它有查找代码中的漏洞功能。 【编辑推荐】 - 网络安全威胁信息格式规范正式发布
- 企业被“勒索”遭殃,企业数据安全路在何方
- 5G规范安全性和协议漏洞分析(上篇)
- 走进几维安全,听CTO刘柏江讲述他们想做的事儿
- 【安全预警】大量恐吓勒索垃圾邮件来袭
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0 (编辑:开发网_开封站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|