通常,当某个站点要求您在访问某个页面之前已登录时,您将进入登录屏幕,并在成功验证自己后,您将被重定向回最初请求的页面.这对于可用性非常有用 - 但是如果不仔细审查,此功能很容易成为一个开放的重定向漏洞.
遗憾的是,对于此漏洞的一个示例,只看ASP.NET MVC 2提供的默认LogOn操作:
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid) {
if (MembershipService.ValidateUser(model.UserName, model.Password)) {
FormsService.SignIn(model.UserName, model.RememberMe);
if (!String.IsNullOrEmpty(returnUrl)) {
return Redirect(returnUrl); // open redirect vulnerability HERE
} else {
return RedirectToAction("Index", "Home");
}
} else {
ModelState.AddModelError("", "User name or password incorrect...");
}
}
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
如果用户成功通过身份验证,则会将其重定向到"returnUrl"(如果通过登录表单提交提供).
以下是利用此漏洞的简单示例攻击(实际上是众多攻击之一):
http://www.mybank.com/logon?returnUrl=http://www.badsite.comhttp://www.badsite.com看起来与受害者银行的网站完全相同,因此受害者不知道他现在在不同的网站上.http://www.badsite.com 说"我们需要更新我们的记录 - 请在下面输入一些非常个人的信息:[ssn],[地址],[电话号码]等."有关如何维护此重定向成功登录功能的任何想法,但避免了开放重定向漏洞?
我倾向于将"returnUrl"参数拆分为控制器/动作部分并使用"RedirectToRouteResult"而不是简单地"重定向".这种方法是否会打开任何新的漏洞? …
这应该是一个简单的答案,我相信它将是一个不,
但从一个更大的项目,我有一个接口和程序
iMyUnknown= interface(IInterface)
['..GUID..']
end;
procedure WorkObject(iObj :iMyUnknown);
Run Code Online (Sandbox Code Playgroud)
我知道这很有效
var
MyUnknown : iMyUnknown;
begin
if supports(obj, iMyUnknown, MyUnknown) then
WorkObject(MyUnknown);
Run Code Online (Sandbox Code Playgroud)
但有可能做这样的事情吗?
if supports(obj, iMyUnknown) then
WorkObject(obj as iMyUnknown);
Run Code Online (Sandbox Code Playgroud) 首先,我已经看到了这个问题并理解为什么以下代码不起作用.那不是我的问题.
我有一个常数,它被宣布为;
//Constants.h
extern NSString * const MyConstant;
//Constants.m
NSString * const MyConstant = @"MyConstant";
Run Code Online (Sandbox Code Playgroud)
但是,在某些情况下,让常量具有更具描述性的名称更有用MyReallySpecificConstant.我希望这样做:
//SpecificConstants.h
extern NSString * const MyReallySpecificConstant;
//SpecificConstants.m
#import "Constants.h"
NSString * const MyReallySpecificConstant = MyConstant;
Run Code Online (Sandbox Code Playgroud)
显然我不能这样做(这在上面的链接问题中有解释).
我的问题是:
如何(除了类似的东西#define MyReallySpecificConstant MyConstant)我可以在多个名称下提供一个常量?
我正在开始一个新项目,必须决定我们将使用哪个CMIS客户端库.
我们的Java项目只需要连接一个CMIS服务器(实际上是Alfresco,但它无关紧要),以便执行一些读/写/搜索操作.
我正在寻找一个客户端库:
你会推荐哪一个?为什么?
以下是一些可能性:
我在Mac OS10.6.3上使用Terminal.app,带有gnu屏幕和zsh.
我想要做的是,pwd在Terminal.app中查看(或URL)并双击它,然后选择整个路径,然后复制并粘贴.
但我现在得到的是一个目录名,因为'/'不被视为单词.我发现iTerm有一个设置来改变它(iTerm - >首选项 - >鼠标 - >字符被认为是一个单词的一部分),但有什么方法可以在我的环境中做到这一点?
我有用C++编写的这个循环,用MSVC2010编译需要很长时间才能运行.(300毫秒)
for (int i=0; i<h; i++) {
for (int j=0; j<w; j++) {
if (buf[i*w+j] > 0) {
const int sy = max(0, i - hr);
const int ey = min(h, i + hr + 1);
const int sx = max(0, j - hr);
const int ex = min(w, j + hr + 1);
float val = 0;
for (int k=sy; k < ey; k++) {
for (int m=sx; m < ex; m++) {
val += original[k*w + m] * …Run Code Online (Sandbox Code Playgroud) 我多年来一直在使用MySQL,主要是在去年左右的小型项目上.我不确定这是语言的本质还是我缺乏真正的教程让我感到不确定我写的是否是用于优化目的和缩放目的的正确方法.
虽然我在PHP中自学,但我非常确定自己和我编写的代码,很容易将它与其他人比较等等.
使用MySQL,我不确定是否应该(以及在什么情况下)使用INNER JOIN或LEFT JOIN,我也不知道它具有大量的功能.虽然我已经为处理了数千万条记录的数据库编写了代码,但我不知道它是否是最佳的.我经常发现一个小的调整会使查询的时间少于原始时间的1/10 ......但我怎么知道我当前的查询也不慢?
我希望在这个领域对优化数据库和可扩展的能力充满信心.使用不是问题 - 我每天都会以多种不同的方式使用它.
所以,问题是,路径是什么?读书?网站/教程?建议?
我正在研究iPhone开发书*而不是真正了解目标C.在大多数情况下,我能够跟踪正在发生的事情,但是有一些方法声明,如下面的那个,我有点麻烦解析.例如:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) section {
return [self.controllers count]; //controllers is an instance variable of type NSArray in this class
}
Run Code Online (Sandbox Code Playgroud)
它看起来这是一个名为numberOfRowsInSection的方法,它返回一个NSInteger,并将NSInteger作为一个本地称为"section"的参数.但是我不理解对tableView的所有引用,或者为什么在方法中没有使用它时需要参数.有人可以澄清一下吗?谢谢.
*P.258,由Mark和LaMarche开始的iPhone 3开发,由Apress出版
更新:我能够找到另一个更详细的SO线程: Objective C中的方法语法
所以,我有一个看起来像这样的查询:
SELECT id,
DATE_FORMAT(CONVERT_TZ(callTime,'+0:00','-7:00'),'%b %d %Y') as callDate,
DATE_FORMAT(CONVERT_TZ(callTime,'+0:00','-7:00'),'%H:%i') as callTimeOfDay,
SEC_TO_TIME(callLength) as callLength
FROM cs_calldata WHERE
customerCode='999999-abc-blahblahblah' AND
CONVERT_TZ(callTime,'+0:00','-7:00') >= '2010-04-25' AND
CONVERT_TZ(callTime,'+0:00','-7:00') <= '2010-05-25'
Run Code Online (Sandbox Code Playgroud)
如果你像我一样,你可能会开始认为,如果我没有要求它计算CONVERT_TZ(callTime,'+0:00','-7:00')四次单独的时间,它可能会提高可读性和可能的查询性能.
所以我尝试为该表达式创建一个列别名,并用该别名替换进一步的出现:
SELECT id,
CONVERT_TZ(callTime,'+0:00','-7:00') as callTimeZoned,
DATE_FORMAT(callTimeZoned,'%b %d %Y') as callDate,
DATE_FORMAT(callTimeZoned,'%H:%i') as callTimeOfDay,
SEC_TO_TIME(callLength) as callLength
FROM cs_calldata WHERE
customerCode='5999999-abc-blahblahblah' AND
callTimeZoned >= '2010-04-25' AND
callTimeZoned <= '2010-05-25'
Run Code Online (Sandbox Code Playgroud)
这是我学习的时候,引用MySQL手册:
标准SQL不允许在WHERE子句中引用列别名.强制执行此限制是因为在评估WHERE子句时,可能尚未确定列值.
所以,这种方法似乎已经死了.
如何用这样的重复表达式编写查询来处理它?
objective-c ×2
sql ×2
alfresco ×1
asp.net-mvc ×1
assembly ×1
c ×1
c++ ×1
cmis ×1
column-alias ×1
constants ×1
delphi ×1
delphi-7 ×1
expression ×1
interface ×1
macos ×1
mysql ×1
performance ×1
php ×1
redirect ×1
security ×1
select ×1
terminal ×1