谁能告诉我一个方法来防止SQL注入用于建立查询时SQLite,其中WHERE子句的"myval IN (string_1, ... , string_n)"条件?
我想通过注释动态构建命令文本,并从字符串列表中添加这些注释的参数.有没有更简单的方法 ?
谢谢.
例如,如果我在表单中选择[URL值],将[URL值]保存在数据库中,然后在如下页面中使用它:
<a href="[URL value]" > The Link </a>
Run Code Online (Sandbox Code Playgroud)
如何防止此[URL值]:
http://www.somelink.com"> Evil text or can be empty </a> ALL THE EVIL HTML I WANT <a href="
Run Code Online (Sandbox Code Playgroud)
如何保护URL表单文件的这种HTML注入,而不会破坏URL,以防它有效?
我正在查看php.net手册,它有这行代码:
Hi <?php echo htmlspecialchars($_POST['name']); ?>.
You are <?php echo (int)$_POST['age']; ?> years old.
Run Code Online (Sandbox Code Playgroud)
它在下面说:
htmlspecialchars()确保html中特殊的任何字符都被正确编码,这样人们就无法将HTML标记或Javascript注入页面.
这真的有必要吗?
有人真的可以将恶意代码放入那一行吗?有什么可担心的?可以将某些东西注入该行来运行一些PHP代码吗?即使在这种情况下没有威胁,他们是否只是让人们习惯于注意这一点?
我正在考虑将文件包含在脚本中,该脚本具有基于cookie的名称
像这样的东西:
include("sometext".$mycoockie_here."some_text.php");
Run Code Online (Sandbox Code Playgroud)
以上代码是否容易受到此类攻击?-即使是"sometext"和"sometex.php"硬编码?
我怎样才能避免mysql注入?这是我现在的PHP文件
<?php
include 'config.php';
$Name = $_GET['Name'] ;
$sql = "Select * from tables where names =\"$Name\"";
try {
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbh->query('SET CHARACTER SET utf8');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->query($sql);
$names = $stmt->fetchAll(PDO::FETCH_OBJ);
$dbh = null;
echo '{"key":'. json_encode($names) .'}';
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
?>
Run Code Online (Sandbox Code Playgroud)
当我把$stmt = $dbh->query($sql); $stmt->execute(array(':name' => $name));它放到代码时,它不起作用.那我该怎么办呢?
我有一个javascript,其中我使用$ .post()命令将变量发布到php文件,我在相同的.js文件中硬编码的php文件的URL.
我只是想知道是否有人从地址栏中注入$ .post()命令并将无效数据发送到PHP文件?
如果是,如何防止或如何检测这些无效数据?
我在C#中有一些用于创建新密码的代码:
SqlCommand cmd = new SqlCommand("select pwdencrypt('" + txtNewPass1.Text + "')", Conn);
Run Code Online (Sandbox Code Playgroud)
现在,这将从文本框txtNewPass1中获取文本值,并使用pwdencrypt对其进行加密,然后将另一位代码放入数据库(该位使用参数).
但是,问题是上面的代码没有 - 实际上似乎无法实现.使用参数(而不是txtNewPass1.Text)似乎由于某种原因带回了错误的值(实际上,我现在想知道我是否可以通过将txtNewPass1.Text放入字符串,然后通过参数传递它来解决这个问题) .至少在这种情况下,使用参数会为我们提供与我们的值不匹配的密码.
之前有人遇到过这个吗?
我今天有一个网站被黑了.服务器日志返回类似黑客的尝试:
www.site.com/notifications.php?PID=7&id=999999.9%20union%20all%20select%20%28select%20distinct%20concat%280x7e%2C0x27%2Cunhex%28Hex%28cast%28schema_name%20as%20char%29%29% 29%2C0x27%2C0x7e%29%20from%20%60information_schema%60.schemata%20limit%201%2C1%29%2C0x31303235343830303536%2C0x31303235343830303536%2C0x31303235343830303536--
但我在我的代码中使用了mysql_real_escape_string():
if (isset($_GET['id']) && $_GET['id'] != '') {
$id = mysql_real_escape_string($_GET['id']);
} else {
$id = '';
}
if ($id == '') {
$stmt = "SELECT * FROM tbln13 ORDER BY id DESC";
} else {
$stmt = "SELECT * FROM tbln13 WHERE id = $id";
}
$NewsResult = mysql_query($stmt) or die (mysql_error());
Run Code Online (Sandbox Code Playgroud)
为什么我的网站无法阻止此次攻击?
我还没有在这里找到这个问题,我已经对此进行了一些快速的谷歌研究,但我无法找到这个问题的明确或好的答案.
是否可以在输入字段中注入一段php代码.这实际上是有效的.
//for instance.
//Ill fill in '"test()"' in the field.
<input type="text" name="input" value="'"test()"'">
$injection = $_POST/*(or $_GET)*/['input']; // coming from the input
public function test(){
echo "injection successful";
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?
这是PHP中用于客户端主机名的超全局:
$_SERVER['REMOTE_HOST']
Run Code Online (Sandbox Code Playgroud)
它通常看起来像:
ecIP-AD-DRE-SS.us-west-1.compute.amazonaws.com
IP-AD-DRE-SS.bb.dnainternet.fi
IP-AD-DRE-SS.dynamic.lounea.fi
Run Code Online (Sandbox Code Playgroud)
有人可以更改其主机名,以便它包含能够进行SQL注入的内容吗?此外,如果您只从用户输入中删除单引号,是否会阻止SQL注入?
code-injection ×10
php ×7
mysql ×3
c# ×2
security ×2
sql ×2
address-bar ×1
annotations ×1
javascript ×1
parameters ×1
pdo ×1
post ×1
sqlite ×1
url ×1
xss ×1