七、利用用户定义的函数
几乎每个数据库管理系统都提供了调用定制的本机代码的机制,例如SQL Server有扩展存储过程的概念,Oracle有外部存储过错的概念,等等。虽然这些机制的名称不同,但是基本原理是一致的,那就是用户创建一个可动态装载程序库在windows上为.dll;在linux中为共享对象.so),然后数据库可以通过SQL语句来调用这个库。
由于大多数数据库运行在管理权限上,或者至少能控制他们自己代码和数据,因此这就会招致一个严重的安全问题。如果一个MySQL用户可以创建和执行一个恶意UDF,那么整个数据库服务器的安全性就会岌岌可危。
触发添加和使用UDF的过程的内容,我们前面已经讲过一些了,这里将深入探讨更多的细节,因为一旦MySQL本身被攻陷,那么也会殃及MySQL所在的主机,而有时候利用恶意UDF攻陷MySQL是件非常简单的事情。
MySQL提供了一个机制,通过该机制可以扩展默认函数集,方法是编写定制的包含用户定义的函数或者UDFs的动态库。这个机制可以通过CREATE FUNCTION语句加以访问,而MySQL.func表中的表项则可以手动添加。包含函数的程序库必须能够从MySQL装入动态库时所用的路径加以访问。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。