0

我正在做一个像codepad.org这样的项目,输入一个php代码并编译它并给出error or output

我想禁用一些功能mysql_query,如果有人使用它,然后想显示一些警告,比如mysql_query() is disabled for some security reasons

如何禁用这些功能?

4

3 回答 3

1

在共享主机上,您有时仍有机会编译自己的 PHP 并将其安装在您的主目录中。通过这样做,您可以在编译时禁用某些库。并且可以访问您自己的php.ini 对应于您自己安装的PHP。

大多数情况下,在共享主机上,这意味着将您的 PHP 脚本作为 CGI 运行。与大的表现处罚。

顺便说一句,您提到了对SQL Injection的担忧。这是“滥用”您的代码来执行不需要的查询。这不是调用意外的 SQL函数。后者是代码注入,例如,如果您盲目地执行来自不受信任来源的代码(eval()仅用于提及该来源),则可能是后者。如果你有这样的安全漏洞——你应该重新设计你的应用程序,而不是仅仅依靠“聪明的配置”或“补丁”来防止滥用。

于 2013-06-26T08:10:46.607 回答
1

php.ini

设置safe_mode/是

然后:

disable_functions = mysql_connect,system,exec,fopen,fputs,file_put_contents,mysql_query

在共享服务器上,如果不保护自己的虚拟根,您可能无法做到这一点。.htaccess 受服务器所有者设置的限制

你可以像.htaccess这样改变php标志:

php_flag disable_functions = mysql_connect,system,exec,fopen,fputs,file_put_contents,mysql_query

(也许没有“=”)

它仍然取决于服务器配置

于 2013-06-26T07:54:19.800 回答
0

我的猜测是删除扩展名php.ini

改变:

extension=php_mysql.dll
extension=php_mysqli.dll 

至:

;extension=php_mysql.dll
;extension=php_mysqli.dll

更新:

可能您可以使用 阻止您的 MySQL 服务器的 IP 地址.htaccess,因此用户将无法连接到它。

于 2013-06-26T07:53:12.267 回答