Php 不允许此会话的mysql更新
我有一个不允许我向用户授予特权的web主机。 因此,我只有一个可用的用户,具有选择/更新/删除权限 我使用PHP和MySQLi连接到MySQL 有没有办法告诉MySQL(数据库本身)或Php 不允许此会话的mysql更新,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个不允许我向用户授予特权的web主机。 因此,我只有一个可用的用户,具有选择/更新/删除权限 我使用PHP和MySQLi连接到MySQL 有没有办法告诉MySQL(数据库本身)或MySQLi(PHP对象)只允许对当前会话进行更新/删除? 目的是制定此类代码: $mysqli = new mysqli(MYSQLI_IP, MYSQLI_USER, MYSQLI_PASSWORD,n MYSQLI_DBNAME); // I have SELECT privileges so it wor
MySQLi
(PHP对象)只允许对当前会话进行更新/删除?
目的是制定此类代码:
$mysqli = new mysqli(MYSQLI_IP, MYSQLI_USER, MYSQLI_PASSWORD,n MYSQLI_DBNAME);
// I have SELECT privileges so it works
$mysqli->query('SELECT * FROM `table`');
// This should work too because I have UPDATE privilege
$mysqli->query('UPDATE `table` SET `date`=NOW()');
// This is the "command" I'm looking for
$mysqli->disallowUpdates();
// Ok, it still works
$mysqli->query('SELECT * FROM `table`');
// This must not work because I told mysqli (php)/mysql (db)
// to disallow updates for this session
$mysqli->query('UPDATE `table` SET `date`=NULL');
你不能以任何方式那样做。您需要自己完成该逻辑,例如: 在某些条件下允许或不允许:
session_start();
$_SESSION['isAllowedToUpdate'] = false;
执行以下更新:
if (isset($_SESSION['isAllowedToUpdate']) && $_SESSION['isAllowedToUpdate']) {
// do some updates
}
旁注:您在
中有一个(杂散的)n
(MYSQLI\u IP、MYSQLI\u用户、MYSQLI\u密码、n MYSQLI\u DBNAME)
typo?定义“当前会话”。你的意思是PHP吗?特权是基于用户的,而不是基于会话的。我想,但我有点不喜欢它,因为在注入的情况下,我不会对注入的更新有任何保护。但如果没有其他方法,我会坚持这个解决方案…@Xenos编写防注入代码,即使用带有占位符的准备好的语句。@VMai它将只针对客户端而不是开发人员进行防注入:如果(坏的)开发人员编写更新而不是选择,这将是不安全的,除非我使用不同的select(…)
和update(…)
方法执行CustomMySQLi
类。