我不确定这是安全问题还是我理解错误?这就是我问这个问题的原因。
据我所知,任何人都可以使用URL运行任何控制器功能。假设我在控制器中有一个名为delete
的控制器函数user
。
所以任何人都可以使用
运行该功能http://example.com/index.php/user/delete
这是一个安全问题吗?
我的意思是在纯PHP中,即使您知道自定义函数名,也无法通过URL运行任何函数。
但似乎任何人都可以在Codeigniter Controller中运行任何功能,如果他们知道控制器名称和功能名称。这是安全问题还是我理解错误?
答案 0 :(得分:0)
在您提供delete
方法的示例中,可能存在恶作剧。您没有显示发送到delete
的参数,但需要一个参数来识别要删除的用户。敌对运营商可以呼叫delete
并尝试随机用户ID值。为了“安全”,除非用户已知且具有适当的权限,否则必须使用某种身份验证/权限系统,否则删除方法不会继续。
这同样适用于处理“用户”的任何“添加”,“编辑”和可能的“查看”方法。
实际上,任何处理创建,更新,读取和删除(CRUD)任何数据的UI都应该有一个身份验证/权限系统。
这种需求并非CodeIgniter独有。
答案 1 :(得分:0)
你是误会。将URL传递给CodeIgniter时,您不是直接执行自定义函数。 CI获取URL,将其分成几部分并根据默认处理和您配置的任何自定义路由计算出如何路由它。您可以将一个快速而肮脏的设置放在一起,以类似的方式工作而不使用CI。这种设置并不是CI独有的,甚至不是PHP本身。
此行为不是安全问题。用户输入+开发人员响应是安全问题。如何处理该删除调用以及传入的数据是潜在安全问题变得相关的地方。
答案 2 :(得分:-1)
没有任何安全问题。 但是你说你使用删除功能所以设置任何删除参数值。 如果使用任何参数删除任何行值,则使用以下url格式 http://www.example.com/index.php/user/delete/id/1 可能是它的工作。或详细描述,然后我帮助你。