小编Scr*_*t47的帖子

什么时候最好消除用户输入?

用户等于不值得信任.永远不要相信不值得信任的用户输入.我明白了.但是,我想知道什么时候消毒输入的最佳时间是.例如,您是否盲目存储用户输入,然后在访问/使用它时对其进行清理,或者您是否立即清理输入然后存储此"已清理"的版本?也许除了这些之外我还有其他一些方法.我更倾向于第一种方法,因为仍然必须谨慎地处理来自用户输入的任何数据,其中"清理的"数据可能仍然在不知不觉中或意外地变得危险.无论哪种方式,人们认为哪种方法最好,原因是什么?

xss sanitization user-input sql-injection

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

如何重置表的主键?

在我的表中,tbphotos我有100条记录.然后我删除了所有记录,现在我想重新启动数据输入,我发现我的主键不是从1开始,而是从101开始,

有没有办法重置主键?

我正在使用MySQL管理员帐户.

mysql primary-key

52
推荐指数
4
解决办法
6万
查看次数

针对Web应用和移动应用的REST API身份验证

我在决定如何为RESTful API实现身份验证时遇到一些麻烦,这些API对于Web应用程序和移动应用程序都是安全的.

首先,我考虑通过HTTPS调查HTTP基本身份验证作为选项.它适用于移动应用程序,其中用户名和密码可以安全地存储在操作系统密钥链中,并且由于请求将通过HTTPS而无法在传输过程中被截获.API也很优雅,因为它完全是无状态的.这个问题是针对Web应用程序的.将无法访问用于存储用户名和密码的密钥链,因此我需要使用cookie或localStorage,但随后我将用户的私人详细信息存储在易于访问的位置.

经过更多的研究,我发现了很多关于HMAC认证的讨论.我用这种方法看到的问题是需要一个只有客户端和服务器知道的共享秘密.如何在Web应用程序中为特定用户获取每个用户的秘密,除非我有一个api/login端点,它接受用户名/密码并将秘密返回存储在cookie中?在将来的请求中使用.然而,这是向API引入状态.

为了让另一个扳手投入工作,我希望能够将API限制为某些应用程序(或者,能够阻止某些应用程序使用API​​).我无法看到这个网络应用完全公开的可行性.

我真的不想实现OAuth.这可能对我的需求有些过分.

我觉得好像我可能没有完全理解HMAC,所以我欢迎一个解释,以及如何通过网络应用程序和移动应用程序安全地实现它.

更新

我最终使用HTTP Basic Auth,但是不是每次请求都提供实际的用户名和密码,而是实现端点以交换访问密钥的用户名和密码,然后为每个经过身份验证的请求提供访问密钥.消除了在浏览器中存储用户名和密码的问题,但当然如果您有权访问该计算机并使用它,您仍然可以删除令牌.事后看来,我可能会进一步研究OAuth,但对初学者来说这很复杂.

authentication api rest

52
推荐指数
1
解决办法
4万
查看次数

PHP - 不能使用标量作为数组警告

我有以下代码:

 $final = array();
    foreach ($words as $word) {
        $query = "SELECT Something";
        $result = $this->_db->fetchAll($query, "%".$word."%");
        foreach ($result as $row)
        {
            $id = $row['page_id'];
            if (!empty($final[$id][0]))
            {
                $final[$id][0] = $final[$id][0]+3;
            }
            else
            {
                $final[$id][0] = 3;
                $final[$id]['link'] = "/".$row['permalink'];
                $final[$id]['title'] = $row['title'];
            }
        } 
    }
Run Code Online (Sandbox Code Playgroud)

代码SEEMS工作正常,但我收到此警告:

Warning: Cannot use a scalar value as an array in line X, Y, Z (the line with: $final[$id][0] = 3, and the next 2).
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何解决这个问题?

php arrays scalar warnings zend-framework

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

如何在没有Laravel的情况下使用Eloquent ORM?

是否可以在没有Laravel的情况下使用Eloquent或者是否有人知道同样易于使用的ORM?

php laravel eloquent

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

我应该在PHP中注意哪些安全问题

我刚开始学习PHP,我一直在ASP.Net开发Web应用程序很长一段时间.我想知道是否有任何PHP特定的安全错误,我应该注意.

所以,我的问题是每个PHP开发人员应该知道的最重要的安全提示是什么?

每个答案请保持一个提示,以便人们可以有效地上/下投票.

php security

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

WSDL中的targetNamespace和namespace

我正在研究SOAP Web服务,我对Web服务很陌生.在WSDL中,我在定义中的targetNamespace元素和包含在其中的命名空间中有点混淆targetNamespace.

<definitions .... targetNamespace=" " >

<xsd:schema>
<xsd:import namespace=" " schemaLocation=""/>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

这两个元素是什么意思,我搜索了网络上的许多文章,我无法清楚地识别出这一点.有人可以解释一下吗?

这两个得到相同的值吗?

soap wsdl web-services

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

int $ number和int $ number = null有什么区别?

鉴于这种解释

可为空的类型:参数和返回值的类型声明现在可以通过在类型名称前加上问号来标记为可为空。这表示与指定的类型一样,NULL可以分别作为参数传递或作为值返回。

https://www.php.net/manual/zh/migration71.new-features.php

如下代码:


public function test(?int $var) {

}
Run Code Online (Sandbox Code Playgroud)

表示test()可以用$varas int或as 调用null

和以下代码:


public function test(int $var = null) {

}
Run Code Online (Sandbox Code Playgroud)

test()可以用$varas int或as 调用的方法null

这两种方法有什么区别?这些中的任何一个是否比另一个更有效?

php

29
推荐指数
2
解决办法
673
查看次数

如果没有enctype属性,为什么文件上传不起作用?

大多数时候,文件上传错误的来源是我们忘记enctype在HTML表单中添加属性.

通常,我们不需要enctype为常规请求添加属性.但是,我们需要在上传文件时将其添加到HTML表单中,

enctype="multipart/form-data"
Run Code Online (Sandbox Code Playgroud)

我只是很好奇,为什么没有enctype属性上传文件不起作用?

html forms upload

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

如何在用户登录时更新updated_at列?

updated_at每次用户登录时,我都会尝试将列更新为当前时间.

但是我收到以下错误:

InvalidArgumentException无法找到四位数年份数据缺失

PHP

$input = Input::all();
$remember = (Input::has('remember')) ? true : false;

$auth = Auth::attempt([
    'username' => $input['username'],
    'password' => $input['password'],
    'active' => 1
    ],$remember
);

if ($auth) 
{
    $user = Auth::user();
    $user->updated_at = DB::raw('NOW()');
    $user->save();

    if ($user->userType==1) 
    {
        return Redirect::intended('admin');
    }
    elseif ($user->userType==2)
    {
        return Redirect::intended('corporate');
    }
    elseif ($user->userType==3) 
    {
        return Redirect::intended('trainer');
    }
    elseif ($user->userType==4) 
    {
        return Redirect::intended('user');
    }
}
Run Code Online (Sandbox Code Playgroud)

mysql laravel eloquent

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