Jul*_*Lam 2 php mysql security pdo mysql-real-escape-string
所以我很偏执并且使用mysql_real_escape_string()PDO.我实际上不在PDO中使用预处理语句,所以我必须清理输入.
当我自己的服务器上托管,我想创建本地计算机上的非特权用户这样mysql_real_escape_string()就不会失败,我的空变量(嘿,现在这是消毒!).我意识到这是一个非常失败的解决方案,因为如果数据库没有匹配的字符集,那么根本没有消毒点,但它适用于临时.
现在在我的新主机上,我无法为数据库创建一个unpassworded,nonrivileged用户...并且mysql_real_escape_string()因为本地计算机上没有mysql服务器而失败.我无法编辑php.ini来设置默认数据库的hostname/user/pass.
我能做什么?
在我写这篇文章时头脑风暴,我想知道php是否允许运行时更改配置...也许...... hrm.
编辑:嗯... ini_set()?:o
Pek*_*ica 16
像这样混合两个数据库库是一个坏主意,可能不安全.
mysql_real_escape_string()需要现有的经典mysql_connect()数据库连接(它可以从中获取字符集信息)是完全安全的.的PDO连接将是独立的,可能具有不同的字符集设置,最终导致较少的安全:
在使用mysql_real_escape_string()之前需要MySQL连接,否则会生成级别为E_WARNING的错误,并返回FALSE.如果未定义link_identifier,则使用最后一个MySQL连接.
一直使用PDO,别无选择.
如果您不想使用预准备语句,则PDO::quote应该是正确的函数:
返回一个引用的字符串,理论上可以安全地传入SQL语句.
但请注意,即使该函数的手册页也建议使用预准备语句.
| 归档时间: |
|
| 查看次数: |
11520 次 |
| 最近记录: |