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