![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
postgresql
文章平均质量分 56
trainee
这个作者很懒,什么都没留下…
展开
-
提高postgresql安全性(三、转义符和SQL注入)
在SQL标准中,转义字符串中的'是转义为''(两个单引号),可是很多客户端软件都转义为\'(反斜杆+单引号),为了兼容,若将backslash_quote设为on,将允许\'存在,但对某些客户端编码是不安全的,其中就包括我们gbk编码,因为汉字gbk编码有些字符的末位在数值上等同于\(值为0x5c),某些客户端软件会将这些字符转义错误,导致出现不应该出现的\'而被SQL注入。默认为on:字符串中的反斜杆\ 不起转义作用。(如utf8)或者多测试一下你的转义程序,用最后编码为0x5c 的字符多测试一下。原创 2024-02-22 14:04:00 · 419 阅读 · 1 评论 -
提高postgresql安全性(二、超级用户的隐患)
所幸的是lo_import、lo_export存取操作系统文件的权限依赖于服务器运行postgresq操作系统用户的权限,如果是系统管理员administator身份运行postgresql,那就可以修改服务器上的任何文件。所以postgresql在设计时是不允许系统管理员初始化和运行数据库的,然而在文件系统没有权限设置功能的操作系统如WIN7、XP等非服务器版的电脑上,postgresql是可以以系统管理员身份运行的,所以在这些系统上运行postgresql是十分危险的事。原创 2024-02-22 13:42:12 · 136 阅读 · 1 评论 -
提高postgresql安全性(一、关于权限)
以下讨论以postgresql 10版本为例关于权限:如果没有授权,默认情况下:所有表、schema都无法读取,但数据库任何用户都可以连接,函数任何用户可以执行。默认权限可用 ALTER DEFAULT PRIVILEGES进行修改,但修改默认权限只是对新建的对象起作用,对已建立的对象不起作用。 默认情况下,数据库任何人都可以连接,若要提高安全性,需用 REVOKE ALL ON DATABASE .. FROM PUBLIC, 再对特定的用户一个个授权。除此外,也可以通过pg_hba.conf..原创 2021-09-30 16:12:15 · 637 阅读 · 0 评论 -
PostgreSQL的SSL部署
随着云服务器的兴起,越来越多的数据库服务器被安装在远程。用SSL连接代替明文连接,是数据库的基本安全功能。很庆幸PostgreSQL很早就支持openSSL,各发行版本都带有openSSL连接库(libeay32.dll和ssleay32.dll,可能还有某版本VC运行库)。PostgreSQL的SSL连接分两块:1、服务端的SSL验证:用SSL连接代替明文连接以防止网络包被窃听和防止他人伪装成服务器2、客户端的SSL验证:用客户端SSL证书登录代替密码登录。本文只讲第一块:服务端的SSL验证。以下原创 2020-06-03 14:48:33 · 1908 阅读 · 1 评论 -
POSTGRESQL 中如何隐藏存储过程
POSTGRESQL(以下简称PG)是功能强大的开源数据库,在*NUX下表现出色,性能不逊于ORACLE。更主要的是它提供源代码,而且可进行自行修改,用于商业目的。PG的存储过程统一以函数形式存在,调用的时候用SELECT FUNCTION_NAME(ARG...) 或 SELECT OUT_ARG FROM FUNCTION_NAME(IN_ARG...)形式,而不是用CALL语句。PG的原创 2006-10-10 11:38:00 · 1299 阅读 · 0 评论 -
POSTGRESQL 让客户端互相通信
POSTGRESQL 让客户端互相通信在客户端/服务器的工作模式下,客户机处于主动状态,发送请求给监听状态的服务器,后者处理后再将结果返回给客户机。在这种工作模式下,客户端只与服务端联系,因为它不处于监听状态,所以无法收到服务端或其他客户端“不请自来”的信息。这导致一个现象发生:当某个客户端修改了服务端的数据后,其他客户端不能实时获知,以至这些客户端所获取的数据过时。目前解决的主要方法是客户原创 2007-04-17 11:56:00 · 1556 阅读 · 2 评论 -
让postgresql返回服务端的二进制文件
在postgresql的8.2后,加了一个函数pg_read_file,可以读取服务器上的文件返回给客户端。 该文件返回类型为TEXT类型,所以只能读取文本文件,对于二进制文件或者字符集与数据库默认字符集不兼容的文本文件,所读的数据将被截断。 如何能读二进制文件,返回bytea类型呢?经源代码分析,该函数的内置函数其实是可以读取二进制的,只是接口被转化为文本类型,而在PG原创 2009-01-28 07:48:00 · 1135 阅读 · 0 评论 -
第三方工具导入导出PG可能出现的问题
对于PostgreSQL,导出、导入一般用自带的pg_dump和pg_restore或psql. 若要第三方非特制的工具导出,再导入,或者手工写SQL,除了注意触发器和约束等其他数据库必须注意的通常问题外,还要考虑pg中serial问题: 在pg中,插入一个带有serial字段的表,若不指明serial字段值,serial会自动增加一个值,这和其他数据库是一样的。原创 2009-01-28 07:52:00 · 941 阅读 · 0 评论 -
postgresql:如何上传二进制数据
PostgreSQL的二进制数据类型为bytea,可最多保存2G的数据。在ADO、ODBC等接口,可通过带参数化的插入SQL语句上传二进制。 然而在某些接口、SQL语句无法进行参数绑定,或者某些语言没有二进制的类型,或者接口的不兼容等原因,常无法上传二进制数据。 碰到这种情况下,必须在客户端将二进制转化为一定规则的字符序列,然后插入语句时,来个显示转换cast(字符序列 a原创 2009-10-14 22:25:00 · 2506 阅读 · 0 评论