小编Sha*_*neC的帖子

PHP Globals的安全替代品(良好编码惯例)

多年来,我global $var,$var2,...,$varn在我的应用程序中使用了方法.我已将它们用于两个主要实现:

获取已设置的类(例如数据库连接),并将信息传递给显示到页面的函数.

例:

$output['header']['log_out'] = "Log Out";
function showPage(){
     global $db, $output;
     $db = ( isset( $db ) ) ? $db : new Database();
     $output['header']['title'] = $db->getConfig( 'siteTitle' );
     require( 'myHTMLPage.html' );
     exit();
}
Run Code Online (Sandbox Code Playgroud)

但是,这样做会产生性能和安全后果.

我可以使用哪种替代实践来维护我的功能,但改进设计,性能和/或安全性?

这是我曾经问过的第一个问题,所以如果你需要澄清请注释!

php security performance

10
推荐指数
3
解决办法
7280
查看次数

将主体/用户上下文设置为用户对象

我的WebAPI 2应用程序有一个自定义授权过滤器,用于检查访问令牌.如果令牌存在,并且API具有该属性,那么我检查是否存在映射到该令牌的用户.

由于API的性质,大多数方法在特定用户的上下文中运行(即"POST api/profile"以更新用户的配置文件).为了做到这一点,我需要从访问令牌获得的目标用户信息.

[当前实现,发生在AuthorizeAttribute类型的属性中]

if( myDBContext.MyUsers.Count( x => x.TheAccessToken == clientProvidedToken ) ){
    IPrincipal principal = new GenericPrincipal( new GenericIdentity( myAccessToken ), new string[] { "myRole" } );
    Thread.CurrentPrincipal = principal;
    HttpContext.Current.User = principal;
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,然后我可以使用访问令牌在方法中进行第二次查找.但由于我已经在auth时间进行查找,所以我不想浪费另一个DB调用.

[我想做什么(但显然不起作用)]

MyUser user = myDBContext.MyUsers.FirstOrDefault( x => x.TheAccessToken == clientProvidedToken );
if( user != null ){
    // Set *SOME* property to the User object, such that it can be
    // access in the body of my controller method
    // …
Run Code Online (Sandbox Code Playgroud)

c# authentication authorization asp.net-web-api

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

Visual Studio错误地报告未安装的Web部署提供程序(SQL Azure)

尝试在" 发布Web"对话框中启用更新数据库的情况下部署到SQL Azure时,出现以下错误:

远程主机没有安装dbDacFx Web Deploy提供程序,这是数据库发布所必需的.要了解有关此更多信息,请访问此链接.

FWLink:http://go.microsoft.com/fwlink/?LinkId = 246068

使用: Visual Studio 2012 RTM,SQL Server 2012,Windows 7旗舰版

项目类型: MVC 4.0(API)

连接字符串:

Server=tcp:SERVER.database.windows.net,1433;Database=DB_NAME;User ID=Me@Server;Password=PASSWORD;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;
Run Code Online (Sandbox Code Playgroud)

其他:防火墙端口对我的测试IP开放.源DB托管在本地实例上.目标数据库最初设置为新的"预览"模式,但我也在标准下复制了它.没有使用EntityFramework(不允许"更新数据库").发布时禁用防火墙,没有效果.

.net sql azure web-deployment visual-studio

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

是否有一种从Windows Phone中的URI获取查询字符串参数的简单方法?

我目前正在使用自定义URI方案来验证使用OAuth的用户.为此,我需要从查询字符串中获取某些参数的值.

有没有一种简单的方法来获取这些信息?或者是我使用REGEX或其他字符串操作的唯一选择?

我以前发现了对ParseQueryString之类的引用,但这些引用包含在Windows Phone上不可用的库中.

c# uri query-string windows-phone windows-phone-8

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

Javascript函数范围

为什么警告打印2在下面的例子中?var a未知函数n ...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title>Test Doc</title>
    <script type="text/javascript">
        var a = 1;
        function f() {
            var a = 2;
            function n() {
                alert(a);
            }
            n();
        }
        f();
    </script>
</head>

<body>


</body>
</html>
Run Code Online (Sandbox Code Playgroud)

javascript scope function public

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