问题列表 - 第29234页

HTML/JS实时测试网站

是否有一个用于粘贴代码HTML/JS的网站,当您可以编辑HTML/JS并查看实时更改时?

html javascript

5
推荐指数
1
解决办法
1142
查看次数

AMF和Cross Site脚本漏洞混淆

我刚刚代表SFDC对Deloitte的安全审计工作进行了抨击.基本上我们使用flex并通过AMF进行​​通信.我们使用FluorineFX(而不是LCDS和Blaze).我们被告知,因为AMF响应没有编码,有人可以操纵AMF参数并插入Javascript,这是一个XSS漏洞.我正在努力理解AMF响应如何回复,这可以回应在错误消息中传递的JS,可以由浏览器或其他任何事情执行.我对使用HTML和JS的XSS非常有经验,但看到它被AMF标记有点意外.我与FluorineFx团队保持联系,他们也很困惑.

我很惊讶地看到AMF库对响应数据进行编码,Fluorine肯定没有.看起来像PortSwigger和IBM AppScan这样的安全应用程序在他们的工具箱中包含了这种类型的测试.您是否使用AMF遇到此漏洞并且能解释XSS问题如何表现出来?只是好奇.如果存在争论或者修补漏洞,我需要争论我的方法.考虑到使用Flex的AMF,我认为您可能有一些见解.

附加信息 ...

所以来自实际供应商PortSwigger的更多信息.我向他们提出了问题,网,网,他们承认这种类型的攻击非常复杂.最初他们将此归类为高严重性安全问题,但我认为他们的调整现在正在发生变化.我以为我会发布他们回复的内容,因为我觉得这个观点很有意思.

---来自PortSwigger的问题---

谢谢你的留言.我认为答案是这可能是一个漏洞,但开发并非易事.

你是对的,当AMF客户端使用响应时(除非它做了一些愚蠢的事情),问题不会出现,而是攻击者可以设计出浏览器使用响应的情况.大多数浏览器都会忽略HTTP Content-Type标头,并会查看实际的响应内容,如果它看起来像HTML一样会很乐意处理它.从历史上看,人们已经存在大量攻击,其中人们将HTML/JS内容嵌入到其他响应格式(XML,图像,其他应用程序内容)中,这是由浏览器执行的.

所以问题不在于响应的格式,而在于生成它所需的请求格式.攻击者设计包含有效AMF消息的跨域请求并非易事.XML请求/响应也会出现类似的问题,其中包含类似XSS的行为.当然可以创建一个有效的XML响应,它被浏览器视为HTML,但挑战在于如何在HTTP体内跨域发送原始XML.这不能使用标准HTML表单来完成,因此攻击者需要找到另一种客户端技术或浏览器怪癖来执行此操作.从历史上看,这样的事情在不同的时间都是可能的,直到它们被浏览器/插件供应商修复.我现在还没有意识到任何允许它的东西.

简而言之,这是一种理论上的攻击,它取决于您可以完全忽略的风险配置文件或阻止使用服务器端输入验证,或者通过在服务器上编码输出并在客户端上再次解码.

我认为Burp应该将AMF请求格式标记为缓解此问题,并将影响降级为低 - 我将解决这个问题.

希望有所帮助.

干杯PortSwigger

---更多关于审计的信息---

portSwigger所做的并不一定是二进制有效负载的混乱,他们所做的是混淆了发布到处理程序以指导请求的实际AMF参数.例如,这里是审计的一个片段,它显示了AMF对请求的部分响应......

HTTP/1.1 200 OK
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
P3P: CP="CAO PSA OUR"
Content-Type: application/x-amf
Vary: Accept-Encoding
Expires: Tue, 06 Apr 2010 18:02:10 GMT
Date: Tue, 06 Apr 2010 18:02:10 GMT
Connection: keep-alive
Content-Length: 2595

......../7/onStatus.......
.SIflex.messaging.messages.ErrorMessage.faultCode.faultString
.faultDetail.rootCause.extendedData.correlationId.clientId.destination
.messageId.timestamp.timeToLive    body.headers.#Server.Processing..kFailed 
to locate the requested type 
com.Analytics.ca.Services.XXX5c2ce<script>alert(1)</script>9ccff0bda62..
....I506E8A27-8CD0-598D-FF6E-D4490E3DA69F.Id95ab281-d83b-4beb-abff-c668b9fd42d5
..fluorine.I04165c8e-f878-447f-a19a-a08cbb7def2a.A.q..@............
.        DSId.Aeb5eeabcbc1d4d3284cbcc7924451711.../8/onRes
...[SNIP]...
Run Code Online (Sandbox Code Playgroud)

注意那里的"alert"脚本......他们所做的是将一些脚本附加JS附加到传递的参数之一,其中包含要调用的方法即'com.Analytics.ca.Services.XXX'.通过这样做,JS返回了一条错误消息,但是有很多事情要发生在JS上以便接近执行.似乎是间接威胁.

- 安全审计员的最新观点 -

我和更大的团队讨论过,我们都认为这是一次有效的攻击.正如PortSwigger在他的第一段中提到的那样,理论上,因为你将内容类型设置为x-amf,并希望它不会在浏览器中呈现,大多数浏览器都会忽略此请求并无论如何呈现它.我认为供应商在很大程度上依赖于内容类型设置的事实; 然而,像IE和某些版本的Safari这样的流行浏览器会忽略这一点.

通过利用CSRF或任何其他形式的发起XSS攻击可以轻松触发攻击.

apache-flex security xss amf fluorinefx

13
推荐指数
2
解决办法
4888
查看次数

支持传统的iPhone用户

现在可以下载iPhone SDK 4.0,并且很快就会有消费者可以使用iOS 4.0,开始使用4.0操作系统中的新功能是否有意义?

我主要担心的是,使用4.0功能要求最终用户也将他们的手机/ iPod更新为4.0.虽然这个过程非常简单,但大多数用户更新是否合理?应用程序本身并不需要在新操作系统中引入任何内容,但现在"劝阻"了一些传统的动画技术,以支持它们基于块的对应物.这对我来说很好,我更喜欢使用块方法,但我担心这对最终用户来说是个麻烦.

那么这方面的一般经验是什么?您是否能够获得最新最好的产品或坚持使用当前版本?

ps这假设GM在最终用户可用时安装操作系统 - 而不是测试版.

iphone ios4

8
推荐指数
1
解决办法
1385
查看次数

如何在Rcpp中创建向量列表?

我正在编写一个Rcpp模块,希望作为RcppResultSet列表的一个元素返回一个列表,其元素是向量.例如,.Call("myfunc")$foo应该是这样的:

[[1]]
[1] 1

[[2]]
[1] 1 1

[[3]]
[1] 1 1 1
Run Code Online (Sandbox Code Playgroud)

(这里确切的数字并不重要).问题是我不知道正确的Rcpp方式.我尝试传递一个vector<vector<int> >但是这通过静默地将第一个向量的长度作为宽度来构造矩阵(即使矩阵是粗糙的!).我已经尝试构建一个RcppList但很难RcppVector安全地将各种对象(例如)投射到SEXPs中.

任何人都有关于处理复杂结构的最佳实践的提示,例如Rcpp中的向量列表?

r rcpp

30
推荐指数
2
解决办法
2万
查看次数

如何与MySQL进行"独特"连接

我有两个MySQL表(产品和价格历史记录),我想加入:

Product 表:

Id = int
Name = varchar
Manufacturer = varchar
UPC = varchar
Date_added = datetime
Run Code Online (Sandbox Code Playgroud)

Price_h 表:

Id = int
Product_id = int
Price = int
Date = datetime
Run Code Online (Sandbox Code Playgroud)

我可以执行一个简单的LEFT JOIN:

SELECT Product.UPC, Product.Name, Price_h.Price, Price_h.Date
FROM Product
LEFT JOIN Price_h
ON Product.Id = Price_h.Product_id;
Run Code Online (Sandbox Code Playgroud)

但正如预期的那样,如果我在价格历史表中有多个产品条目,我会得到每个历史价格的一个结果.

如何构建一个只返回每个产品的一个实例的连接,只加入与它相关的价格历史表中的最新条目?

mysql join subquery distinct left-join

21
推荐指数
2
解决办法
5万
查看次数

我从哪里开始使用C#?

我想学习C#哪里是一个好的开始?

我还需要哪些工具来编码和编译?

c#

2
推荐指数
1
解决办法
1006
查看次数

将聚合函数应用于另一个聚合函数的SQL查询

我有几个查询结果使用一个或多个聚合函数和日期GROUP-BY,所以他们看起来像这样:

Date     VisitCount(COUNT)  TotalBilling(SUM)
1/1/10     234                15765.21
1/2/10     321                23146.27
1/3/10     289                19436.51

上面简化的SQL是:

SELECT 
  VisitDate, 
  COUNT(*) AS VisitCount, 
  SUM(BilledAmount) AS TotalBilling 

FROM Visits 

GROUP BY VisitDate
Run Code Online (Sandbox Code Playgroud)

我想要的是一种将聚合函数(如AVG)应用于结果集中的一列的方法.例如,我想将"AvgVisits"和"AvgBilling"列添加到结果集中,如下所示:

Date     VisitCount(COUNT)  TotalBilling(SUM)  AvgVisits  AvgBilling
1/1/10     234                15765.21          281.3      19449.33
1/2/10     321                23146.27          281.3      19449.33
1/3/10     289                19436.51          281.3      19449.33

SQL不允许将聚合函数应用于另一个聚合函数或子查询,因此我能想到的唯一方法是使用临时表或迭代结果集并手动计算值.有没有办法在没有临时表或手动计算的情况下在MSSQL2008中执行此操作?

sql-server aggregate-functions sql-server-2008

1
推荐指数
1
解决办法
2480
查看次数

由批处理循环执行的命令的错误级别

以下代码始终显示0作为errorlevel,但是当复制命令在for循环命令之外完成时,它返回非零错误级别.

for /f "usebackq delims=" %%x in (`copy x y`) do (
    set VAR=%%x
)
ECHO Errorlevel = %ERRORLEVEL%
ECHO VAR = %VAR%
Run Code Online (Sandbox Code Playgroud)

是否可以获取for循环执行的复制命令的错误级别?

windows batch-file

7
推荐指数
2
解决办法
6802
查看次数

是否可以在iPhone OS或Android中检测DPI?

我正在做一些关于制作游戏的研究,该游戏将能够扩展其图形资源以适应其所使用的任何设备的DPI.

为了做到这一点,我希望能够查询设备的DPI,以适当地扩展资产.

这是一款2D游戏,艺术风格非常适合任意缩放.

我将用res/dpi组合做什么的例子:

iPhone/iTouch,320x480(163 dpi) - 文字将是正常尺寸

iPhone4,640x960(326 dpi) - 文本将是两倍大

iPad,768x1024(132 dpi) - 文本可能会限制在某个最小尺寸,以利用更大的屏幕空间.

那么,在iPhone OS上,有没有办法查询屏幕的DPI?

(作为旁注 - 这在Android设备上是否可能?)

iphone resolution dpi ipad

5
推荐指数
1
解决办法
2492
查看次数

水晶报告错误:剩余文本似乎不是公式的一部分

我在水晶报告中收到错误:

提醒文本似乎不是公式的一部分.当出现错误时,突出显示的区域位于2**之间.

这是我在Crystal语法中的公式.

numbervar pos;
stringvar cpu;

if (Length ({_v_hardware.CpuDesc}) >2) then 
(
pos := instr({_v_hardware.CpuDesc},",");
cpu ='{_v_hardware.CpuDesc}';

) 
else 
(
//cpu := {_v_hardware.CpuDesc2};
pos := instr({_v_hardware.CpuDesc},",");
cpu ={_v_hardware.CpuDesc};
)

**//replace({_v_hardware.CpuDesc},"    ","")
if (pos > 0) then
(
replace(replace(replace(left(cpu, pos-1),"    ",""), "Pentium(R) III",""),"Pentium III","");
)
else 
(
replace(cpu,"    ","");
)**
Run Code Online (Sandbox Code Playgroud)

可能导致此错误的任何想法?

提前致谢

crystal-reports

7
推荐指数
1
解决办法
2万
查看次数