首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >checmarx中的反射XSS和存储XSS

checmarx中的反射XSS和存储XSS
EN

Stack Overflow用户
提问于 2015-03-17 09:47:12
回答 1查看 1.4K关注 0票数 2

我有两页

  1. 父页面包含一个链接,单击此链接,我将调用javascript函数。
代码语言:javascript
复制
function callPage( productId ){
   var product = document.getElementById(ProductId).id;
   var OpptyId = {!oppty.Id};
   var urlToOpen = "/apex/" + '{!namespacePrefix}' + 'testPage?product='+product+'&OpptyId'=OpptyId ;

   window.open(urlToOpen ,'','resizable=0,location=0,status=0,scrollbars=0,width=850,height=350,top=100,left=220')
}

从控制器获取Oppty Id的位置。

  1. 在我的孩子页面里,我得到了所有这些附庸
代码语言:javascript
复制
ProductValueId = ApexPages.currentPage().getParameters().get('product');
opptyValue = ApexPages.currentPage().getParameters().get('OpptyId');

然后,这些字段在javascript中用作

代码语言:javascript
复制
function setValue()
{
    var productId = '{!productValueId}';
    window.parent.opener.document.getElementById(productId).value='{!productValue}';
}

其中{!productValue}是从控制器中提取的。

我不明白我应该如何和在哪里修改我的checkmarx问题。

因此,请帮助我,因为我想提交的申请代码审查。

诚挚的问候

EN

回答 1

Stack Overflow用户

发布于 2015-03-18 01:13:49

您将获取查询字符串参数product,将其读入productValueId控制器成员/属性,然后直接输出到Visualforce页面中。

因此,基本上,无论我在查询字符串上给出什么,最终都会输出到页面响应中。

经过一些努力,就有可能对一个查询字符串进行编码,该字符串将从您的JavaScript中分离出来,并执行我不想执行的内容。

例如。

代码语言:javascript
复制
/apex/ABC__testPage?product=productId';alert('xss&OpptyId=006100000000001

或者类似的东西。公平地说,Visualforce将为您编码这个表达式。

Checkmarx已经找到了潜在的路径。您需要删除这个直接路径,或者提供足够的理由说明它不对XSS开放。

一个有用的方法是在从查询字符串读取的值上强制数据类型。例如,显式使用Id而不是string作为productValueId的类型。

然后,还可以验证查询字符串params中引用的记录对当前用户是否有效。也就是说,他们没有更改一些值来访问他们不应该看到的记录。

顺便说一句,Salesforce StackExchange是问Salesforce特定问题的好地方。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29095864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档