自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (3)
  • 收藏
  • 关注

原创 提高postgresql安全性(三、转义符和SQL注入)

在SQL标准中,转义字符串中的'是转义为''(两个单引号),可是很多客户端软件都转义为\'(反斜杆+单引号),为了兼容,若将backslash_quote设为on,将允许\'存在,但对某些客户端编码是不安全的,其中就包括我们gbk编码,因为汉字gbk编码有些字符的末位在数值上等同于\(值为0x5c),某些客户端软件会将这些字符转义错误,导致出现不应该出现的\'而被SQL注入。默认为on:字符串中的反斜杆\ 不起转义作用。(如utf8)或者多测试一下你的转义程序,用最后编码为0x5c 的字符多测试一下。

2024-02-22 14:04:00 323 1

原创 提高postgresql安全性(二、超级用户的隐患)

所幸的是lo_import、lo_export存取操作系统文件的权限依赖于服务器运行postgresq操作系统用户的权限,如果是系统管理员administator身份运行postgresql,那就可以修改服务器上的任何文件。所以postgresql在设计时是不允许系统管理员初始化和运行数据库的,然而在文件系统没有权限设置功能的操作系统如WIN7、XP等非服务器版的电脑上,postgresql是可以以系统管理员身份运行的,所以在这些系统上运行postgresql是十分危险的事。

2024-02-22 13:42:12 127 1

原创 提高postgresql安全性(一、关于权限)

以下讨论以postgresql 10版本为例关于权限:如果没有授权,默认情况下:所有表、schema都无法读取,但数据库任何用户都可以连接,函数任何用户可以执行。默认权限可用 ALTER DEFAULT PRIVILEGES进行修改,但修改默认权限只是对新建的对象起作用,对已建立的对象不起作用。 默认情况下,数据库任何人都可以连接,若要提高安全性,需用 REVOKE ALL ON DATABASE .. FROM PUBLIC, 再对特定的用户一个个授权。除此外,也可以通过pg_hba.conf..

2021-09-30 16:12:15 598

原创 浏览器标签页的localStorage、sessionStorage、cookie问题

一个浏览器应用程序的各个运行实例的各个标签页拥有各自的DOM空间、Javascripts空间、sessionStorage,但对于一个同源网站,这些标签页共享cookie、localStorage。 各个标签页(相当于一个window)关闭,DOM空间、Javascripts空间、sessionStorage生命期也结束,但localStorage永久保存,有expires date的 cookie结束于过期日期,没expires date的cookie(结束于session)并不会立刻结束,必须直到整个

2021-04-03 10:37:04 692

原创 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 1855 1

原创 postgresql:如何上传二进制数据

PostgreSQL的二进制数据类型为bytea,可最多保存2G的数据。在ADO、ODBC等接口,可通过带参数化的插入SQL语句上传二进制。 然而在某些接口、SQL语句无法进行参数绑定,或者某些语言没有二进制的类型,或者接口的不兼容等原因,常无法上传二进制数据。 碰到这种情况下,必须在客户端将二进制转化为一定规则的字符序列,然后插入语句时,来个显示转换cast(字符序列 a

2009-10-14 22:25:00 2475

原创 第三方工具导入导出PG可能出现的问题

 对于PostgreSQL,导出、导入一般用自带的pg_dump和pg_restore或psql. 若要第三方非特制的工具导出,再导入,或者手工写SQL,除了注意触发器和约束等其他数据库必须注意的通常问题外,还要考虑pg中serial问题: 在pg中,插入一个带有serial字段的表,若不指明serial字段值,serial会自动增加一个值,这和其他数据库是一样的。  

2009-01-28 07:52:00 933

原创 让postgresql返回服务端的二进制文件

 在postgresql的8.2后,加了一个函数pg_read_file,可以读取服务器上的文件返回给客户端。 该文件返回类型为TEXT类型,所以只能读取文本文件,对于二进制文件或者字符集与数据库默认字符集不兼容的文本文件,所读的数据将被截断。 如何能读二进制文件,返回bytea类型呢?经源代码分析,该函数的内置函数其实是可以读取二进制的,只是接口被转化为文本类型,而在PG

2009-01-28 07:48:00 1117

原创 POSTGRESQL 让客户端互相通信

 POSTGRESQL 让客户端互相通信在客户端/服务器的工作模式下,客户机处于主动状态,发送请求给监听状态的服务器,后者处理后再将结果返回给客户机。在这种工作模式下,客户端只与服务端联系,因为它不处于监听状态,所以无法收到服务端或其他客户端“不请自来”的信息。这导致一个现象发生:当某个客户端修改了服务端的数据后,其他客户端不能实时获知,以至这些客户端所获取的数据过时。目前解决的主要方法是客户

2007-04-17 11:56:00 1553 2

原创 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 1282

openssl_vfp.rar

openSSL库部分函数的vfp封装类,主要封装以下函数 1、HASH类函数:MD5、SHA1、SHA256、SHA512 2、HMAC类函数:MD5、SHA1、SHA256、SHA512 3、AES encrypt和decrypt: CBC-128 4、RSA publicKey Encrypt 和 RSA privateKey Decrypt 5、RSA sign 和 RSA verify: MD5、SHA1、SHA256、SHA512 以上函数为常用,如支付宝支付和微信支付都可用到, openSSL动态链接库:可从我的另外一个上传资源或从官网下载

2021-01-27

openssl动态库1.1.1a.rar

openSSL 动态链接库 1.1.1a 版本, 包括 libcrypto-1_1.dll 和 libssl-1_1.dll 直接拷贝到需要引用的目录下

2021-01-27

psqlodbc8.01.02++

POSTGRESQL 让客户端互相通信<br/><br/>在客户端/服务器的工作模式下,客户机处于主动状态,发送请求给监听状态的服务器,后者处理后再将结果返回给客户机。<br/>在这种工作模式下,客户端只与服务端联系,因为它不处于监听状态,所以无法收到服务端或其他客户端“不请自来”的信息。这导致一个现象发生:当某个客户端修改了服务端的数据后,其他客户端不能实时获知,以至这些客户端所获取的数据过时。目前解决的主要方法是客户端周期性向服务器端获取数据,即使这些数据并没有变动。这导致两端都浪费了资源。<br/><br/>POSTGRESQL能较好地解决这个问题。POSTGRESQL是个开源数据库,功能齐全,性能优异,其好处这里不多描述,大家可以去(http://www.postgresql.org)了解.<br/><br/>POSTGRESQL有两个SQL语句 LISTEN和NOTIFY。<br/>LISTEN NAME 让当前连接处于监听状态,监听名为NAME的NOTIFY的到来。<br/>NOTIFY NAME 发送名为NAME的NOTIFY事件给之前已经LISTEN NAME的所有客户端,<br/><br/>NOTIFY事件格式含有NAME和PID两项,LISTEN方可以根据PID项获知是哪个进程发送。举个例子:所有客户端想及时了解表AAA更改事件,于是它们就发送LISTEN AAA命令监听该事件的发生(取AAA名,只是直观点,主要看大家的约定)。当某一个客户端修改了表AAA,就发送NOTIFY AAA命令,于是所有客户端就收到了这个通知,知道表AAA已经被别人修改。<br/><br/>LISTEN/NOTIFY具体应用请看POSTGRESQL文档。<br/><br/>俗话,好马还要好鞍。既然数据库有如此好的功能,若接口不支持,也是白搭。POSTGRESQL的各种接口目前只有C接口libpq.dll和JAVA接口JDBC有封装这功能,其余接口如ODBC,OLEDB等都没封装,原因是,不当当是接口要封装了此功能,同时客户应用程序要有监听机制,才可以收到这些“不请自来的”的通知。C和JAVA可以设计成多线程,让某个线程阻塞IO进行监听,另一线程可以正常工作,是不会影响应用的运行的。而其他用ODBC接口C的应有程序如PB、VFP等,很难设计成多线程,所以这些接口封装LISTEN/NOTIFY也没有多大意义。<br/><br/>既然应有程序不是多线程,但WINDOWS操作系统是多线程,是否可将这些“不请自来的”的通知转化为WINDOWS的消息流呢?而大部分应用程序是可以处理自定义消息的。答案是可以的,这是我在ODBC封装NOTIFY/LISTEN的思路。在ODBC中非调用时间执行WSAAsyncSelect,当一个“不请自来的”通知(其实网络包)到达时,会将网络事件转化为消息,应用程序可以设计MESSAGE_HANDLE来处理这些消息。<br/><br/>我把PSQLODBC8.01.02版本的源程序稍微修改后,重新编译,使ODBC封装了此功能。经测试,在各种开发语言是可以成功运行的。具体的使用方法请参照压缩包里的“说明”文挡和例子。<br/><br/><br/>

2007-04-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除