Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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/9/security/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
PHP中的安全性_Php_Security_Client - Fatal编程技术网

PHP中的安全性

PHP中的安全性,php,security,client,Php,Security,Client,我已经编写了一些PHP脚本,在局域网上的无头linux服务器机器上执行一些服务器端工作。例如,我有http://ipadress/php/operations.php?operation=registerUser&uName=X&uAlias=Y。现在,我想保护我的操作脚本,以便;不是局域网上的每个人都可以调用和/或运行它,但是;只有那些。。。是否有预共享密钥。。。?这就是我一直坚持的观点,通过GET/POST参数要求预共享密钥是最容易的,而且可能是最糟糕的解决方案。在php脚本上实现客户端限制

我已经编写了一些PHP脚本,在局域网上的无头linux服务器机器上执行一些服务器端工作。例如,我有
http://ipadress/php/operations.php?operation=registerUser&uName=X&uAlias=Y
。现在,我想保护我的操作脚本,以便;不是局域网上的每个人都可以调用和/或运行它,但是;只有那些。。。是否有预共享密钥。。。?这就是我一直坚持的观点,通过GET/POST参数要求预共享密钥是最容易的,而且可能是最糟糕的解决方案。在php脚本上实现客户端限制的更安全的方法是什么

(我在考虑在启动会话时可能需要客户端提供一个加密密钥文件,并拒绝所有未启动scure会话的人的访问…?这只是我理论上的想法,我不知道从何处开始使用php。)

编辑:我清楚地记得写过“通过GET/POST参数要求预共享密钥是最容易的,也可能是最糟糕的解决方案。”在我最初的帖子中,请停止一遍又一遍地回答同样的问题


edit2:为了澄清问题:operations.php由同一LAN上的客户端计算机上的程序调用。我不希望任何非客户端或陌生人的机器使用operations.php,也不希望任何人能够通过浏览器访问它。我需要某种安全/身份验证方法来防止这种情况。我不是在找登录表单或简单的httpauth。。。而且,我不能简单地限制IP地址,因为;这并不实用,而且比硬编码的非加密密码更糟糕……

在我看来,你在问一个关于网页身份验证和授权的一般性问题

当然,实现这一目标有很多不同的方法。您可以设置基于会话的身份验证系统,该系统要求用户在访问页面/脚本之前输入有效的用户名/密码。这可以是一个简单的登录表单,当用户尝试访问页面时会显示该表单,除非他们经过身份验证。然后,您可以使用PHP的内置会话管理跨页面持久化身份验证


或者,您可以在web服务器级别进行身份验证,例如在Apache中,通过HTTP auth进行身份验证。

在我看来,您是在问一个关于网页身份验证和授权的一般性问题

当然,实现这一目标有很多不同的方法。您可以设置基于会话的身份验证系统,该系统要求用户在访问页面/脚本之前输入有效的用户名/密码。这可以是一个简单的登录表单,当用户尝试访问页面时会显示该表单,除非他们经过身份验证。然后,您可以使用PHP的内置会话管理跨页面持久化身份验证


或者,您可以在web服务器级别进行身份验证,例如在Apache中,通过HTTP auth进行身份验证。

这是我能想到的最简单的方法:

<?php

if ($_REQUEST['key'] == '38lkjsdIEjrkd' && $_SERVER['REMOTE_ADDR'] == 192.168.1.20) {

// load your web page

} else {

// show login or message about authentication

}

我能想到的最简单的方法是:

<?php

if ($_REQUEST['key'] == '38lkjsdIEjrkd' && $_SERVER['REMOTE_ADDR'] == 192.168.1.20) {

// load your web page

} else {

// show login or message about authentication

}

通过创建.htaccess(仅允许某些地址访问脚本)和.htpasswd(定义有访问权限的用户),我支持jonstjohn关于HTTP身份验证的观点。
但是,如果您只需要为几个脚本提供一个快速解决方案,则这是正确的

如果有更多的脚本需要有限的访问,最好的解决方案是创建一个类来处理用户日志并跟踪用户会话


一般来说,在脚本中嵌入密码和幻数被认为是一种糟糕的编码方式。更不用说那些硬编码的“如果”真的很难维护

通过创建.htaccess(只允许某些地址访问脚本)和.htpasswd(定义有访问权限的用户),我支持jonstjohn关于HTTP身份验证的观点。 但是,如果您只需要为几个脚本提供一个快速解决方案,则这是正确的

如果有更多的脚本需要有限的访问,最好的解决方案是创建一个类来处理用户日志并跟踪用户会话


一般来说,在脚本中嵌入密码和幻数被认为是一种糟糕的编码方式。更不用说那些硬编码的“如果”真的很难维护

取决于您需要的安全级别。基本Http身份验证易于设置。请参阅。

取决于您需要的安全级别。基本Http身份验证易于设置。请参阅。

如果您使用带有mod_ssl的Apache,则可以使用由特定证书颁发机构签名的

理论上,您可以只创建三个证书:您的签名证书、服务器证书和一个要分发给客户端的证书


不过,这通常被认为是个坏主意。通常最好向每个客户端分发一个单独的证书。

如果您使用带有mod_ssl的Apache,则可以使用由特定证书颁发机构签名的证书

理论上,您可以只创建三个证书:您的签名证书、服务器证书和一个要分发给客户端的证书


不过,这通常被认为是个坏主意。通常最好将单独的证书分发给每个客户端。

这是目前为止最好的方法。为每个客户机生成证书应该不是问题。我可以在Windows主机上的IIS7(以及Linux主机上的lighttpd)中执行类似的操作吗?我对IIS7不是很熟悉,但本页可能会有所帮助:这是目前为止最好的想法。为每个客户机生成证书应该不是问题。我可以在Windows主机上的IIS7(以及Linux主机上的lighttpd)中执行类似操作吗?我对IIS7不是很熟悉,但本页可能会有所帮助: