Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
注入到非SQL站点(仅限PHP)_Php_Code Injection - Fatal编程技术网

注入到非SQL站点(仅限PHP)

注入到非SQL站点(仅限PHP),php,code-injection,Php,Code Injection,我有一个没有SQL的CMS网站。所有内容都写入文件中 但是,有一个函数(login($login,$pass))使用简单的if-else语句检查登录表单中的POST数据 if login-data-from-file == POST['login'] and password-data-from-file == POST['pass'] then "Log user in" 我想知道是否有办法注入这样的代码。你认为呢?没有,因为你可能只是在比较字符串 然而,对SQ

我有一个没有SQL的CMS网站。所有内容都写入文件中

但是,有一个函数(
login($login,$pass)
)使用简单的if-else语句检查登录表单中的POST数据

if 
    login-data-from-file == POST['login'] 
and
    password-data-from-file == POST['pass'] 
then 
   "Log user in"

我想知道是否有办法注入这样的代码。你认为呢?

没有,因为你可能只是在比较字符串


然而,对SQL注入的免疫并不会自动使任何应用程序变得安全。始终存在和需要担心的问题(在许多其他问题中,只有两种最常见的攻击向量)。

如果您使用了正确的if-else语句,我认为没有办法注入此代码。可以发送
NULL
值(%00),但不应更改任何内容。

如果不使用eval或任何其他黑魔法,则不能直接注入PHP代码。尽管将用户和密码以明文形式存储在文件中并不十分安全。如果你仍然想这样做,你应该确保

  • 包含用户名和密码的文件存储在可公开访问的文件夹之外的位置
  • 密码是经过哈希和盐处理的(非常重要!)
  • 代码中没有任何地方可以让用户访问包含用户名和密码的文件

  • %00听起来不是很像空字符串吗?是的,但是为什么我不能像这样在登录/密码表单中输入:5或1==1。然后PHP使用if-else语句,我在,对吗?不,因为5或1==1是PHP的字符串。您可以键入ex.Login=5或1==1,并且根本没有密码,if…else语句将为false,因为字符串“5或1==1”!=文件中的字符串和密码也不正确。当然,包含此类数据的文件是安全的,不能从外部读取。我认为将所有数据存储在文件中是个坏主意……这是真的,但代码不是我的。这是我第一次发现这样的案例,我很惊讶地决定在这里写下它。