我正在开发一个网站,允许客户登录并查看PDFs服务器上保存的各种内容.这些PDF对于客户来说是独一无二的,并且不应该由未登录的人访问.将文件放到服务器上应该不是问题,我只是不确定如何向最终用户提供这些文件.
我已经使用来自SQL servers服务而不是文件的数据来实现这种事情,所以我不完全确定最有效的方法是什么.
该网站是一个LAMP和我最小的经验PHP(但如果一个框架或其他语言会使这更容易,我可以学习它).
我可能在我脑海中,但我通常都是,所以任何输入都会很棒.
在开始之前,我意识到我正在尝试的是奇异而骇人的行为。它仅用于隔离笔测试,特别是SQL Injection。
我需要做的是编写一条在MySQL数据库上执行与在SQL Server数据库上执行时行为不同的SQL语句。
我可以构建的查询的局限性在于,我只能更改“ WHERE id =”子句之后的内容。我不能影响查询的任何其他部分。具体来说,我需要能够将仅由SQL Server执行的“ UNION SELECT * FROM some_other_table”附加到我输入的末尾。
这显然会使MySQL崩溃,因为它没有我要合并的表。
特别:
SELECT * FROM USERS
WHERE id = My input -> (MySQL code: 'x' or 1=1 )
(MSSQL code 'x' or 1=1 UNION SELECT * FROM table)
Run Code Online (Sandbox Code Playgroud)
问题是,如果其中任何一条语句被原本不是由数据库执行的,它都会炸毁(而不是我需要的方式)。
SELECT * FROM USERS
WHERE id = /*! This will be executed but only by mysql */
Run Code Online (Sandbox Code Playgroud)
很好,但是我仍然无法阻止MySQL执行MSSQL!我只能阻止MSSQL执行MySQL代码。
我最初的想法是在MySQL条件语句中添加一条注释,例如:
SELECT * FROM USERS
WHERE id = /*! 4 or 1=1 --*/ …Run Code Online (Sandbox Code Playgroud) 我正在尝试优化我的本地数据库在正在开发的Web应用程序中填充的速度.目前,它使用PHP访问数据库,然后使用Javascript将该数据插入本地数据库.
问题是,除了几个条目之外的任何东西都会减慢速度,我很确定这是因为它为每一行执行单独的SQL查询.我一直在阅读交易(提交和回滚,什么不是),这似乎是一个答案,但我不完全确定如何实现它,甚至在哪里.
以下是加载特定表的其中一个函数的示例.
function ploadcostcodes()
{
$IPAddress = '';
$User = '';
$Password = '';
$Database = '';
$Company = '';
$No='';
$Name='';
ploadSQLConnection($IPAddress,$User,$Password,$Database,$Company);
Run Code Online (Sandbox Code Playgroud)
//这连接到信息来源的实际数据库.
$Login = 'XXXXXXX';
$conn=mssql_connect($IPAddress,$Login,$Password);
if (!$conn )
{
die( print_r('Unable to connect to server', true));
}
mssql_select_db($Database, $conn);
$indent=" ";
$sql="SELECT Cost_Code_No as No, Description as Name, Unit_of_Measure FROM v_md_allowed_user_cost_codes WHERE Company_No = " . $Company . " and User_No = '" . $User . "'";
$rs=mssql_query($sql);
if (!$rs)
{
exit("No Data Found");
}
while …Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法可以找到PHP中的post变量的来源?
<form method="post" action="test.php">
<input name="myusername"type="text">
<input name="mypassword" type="password">
<input type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
<form method="post" action="test.php">
<input name="myusername"type="text">
<input name="mypassword" type="password">
<input type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用隐藏的输入,但我想知道PHP是否有一种方法来测试POST的来源.