我有这样的代码:
var newMsg = new Msg
{
Var1 = var1,
Var2 = var2
};
using (AppDataContext appDataContext = new AppDataContext(ConnectionString))
{
appDataContext.CClass.InsertOnSubmit(newMsg);
appDataContext.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)
阅读这篇文章后,我相信同样的逻辑适用.
有谁认为这是受SQL注入攻击?
我试图检查一个网站的SQL注入攻击,并惊讶地发现它不是很简单,因为下面是简单的代码.
$sql="select * from user_acount where login_id='".$username."' and password='".$password."' and status='1' ";
Run Code Online (Sandbox Code Playgroud)
我不能做任何SQL注入来测试它.我写了以下内容
第一次尝试检查sql注入
Login: admin'--
Password:'i typed nothing here '
Run Code Online (Sandbox Code Playgroud)
结果您无法登录密码错误.
第二:
Login: admin or 1=1 --'
Password:''
Run Code Online (Sandbox Code Playgroud)
结果您无法登录密码错误.
第三:
Login: admin' or 1=1
Password:''
Run Code Online (Sandbox Code Playgroud)
第4名:登录:admin或1 = 1' - 密码:''
结果您无法登录密码错误.
有谁能解释是什么阻止了我?我没有使用预处理语句,我也没有使用任何过滤器类,我没有real_escape_string?
我想创建一个简单的登录和注册表单,这允许我演示SQL注入,但我目前无法这样做.每次我尝试一个示例表单时,SQLmap都无法攻击它.有人可以给我一个非常简单的基本登录和注册表单,我可以用它来演示SQL注入吗?
我看到了一些类似的问题,没有关于mysql ...
有没有办法将sql注入SP?如何在SP级别上保护此功能?
换句话说,可以通过传入参数以任何方式修改SP内部的查询结构吗?
如果我向存储过程发送参数"1; DELETE FROM users; - "并且查询是:
select *
from T
where = @p
Run Code Online (Sandbox Code Playgroud) 这个登录系统安全吗?
if ($_POST[$submit]){
$user = $_POST[$user];
$pass = $_POST[$pass];
if ($user && $pass){ //if user and pass is enterered
require("vars.php"); //require MySQL conection settings
mysql_connect($auth_mysql_server, $auth_mysql_user, $auth_mysql_pass); //connect to MySQL
mysql_select_db($auth_mysql_db); // select MySQL database
$pass = md5($pass); // hash password
$query = mysql_query("SELECT * FROM $auth_mysql_table WHERE user='$user'"); // run query
$numrows = mysql_num_rows($query);
if ($numrows == 1){ //check if user exists
$row = mysql_fetch_assoc ($query);
$dbid = $row[$auth_mysql_id_row];
$dbuser = $row[$auth_mysql_user_row];
$dbpass = $row[$auth_mysql_pass_row];
if ($pass == $dbpass){ …Run Code Online (Sandbox Code Playgroud) 是否有一个接受字符串作为参数并返回"已清理"字符串的函数,以便支持SQL注入保护?
以下此功能是否能够阻止XSS攻击和SQL注入?
require_once('security.class.php');
function secure_data($data) {
$data = mysql_real_escape_string($data);
$filtered_data = filter_var($data, FILTER_SANITIZE_STRING);
$secure_class = new security_class();
$clean_data = $secure_class->xss_clean($filtered_data);
return $clean_data;
}
Run Code Online (Sandbox Code Playgroud)
该安全类是笨.
我有一个使用各种数据库操作的站点,例如SELECT,INSERT,UPDATE和DELETE.我正在将我的所有mysqli切换到PHP PDO.我被告知切换到PDO应该有助于保持我的网站免受SQL注入,所以应该涵盖.
除了SQL注入,如果你必须选择其他两个安全漏洞来防范,那会是什么?
如果你能为我提供每个场景的一些代码示例,那将非常感激.
我在大学里为我的安全模块做了一个SQL注入项目,我正在努力学习它是如何工作的.
我可以看到当脚本不过滤输入时它是如何工作的,然后循环遍历DB结果集,在屏幕上显示数据.但据我所知,以下代码不容易受SQL注入,因为它只期望在屏幕上显示一组值:
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("testdb");
$result = mysql_query("SELECT id, name, description FROM test_table WHERE id = ".$_GET['id']);
list($id, $name, $description) = mysql_fetch_row($result);
echo "ID: $id \n";
echo "Name: $name \n";
echo "Description: $description \n";
?>
Run Code Online (Sandbox Code Playgroud)
如果我将id的值设置为:
1 OR 1 = 1 UNION SELECT id, username, password FROM users LIMIT 1, 1 --
Run Code Online (Sandbox Code Playgroud)
除非我运行两次mysql_fetch_row($ result)语句,否则不会显示查询的UNION部分中的值,如下所示:
<?php
$result = mysql_query("SELECT id, name, description FROM test_table WHERE id = ".$_GET['id']);
list($id, $name, $description) = mysql_fetch_row($result);
echo "ID: …Run Code Online (Sandbox Code Playgroud) 好吧,我很难过,我有一个CF11 Web应用程序,它没有通过SQL注入的Web应用程序审计报告,这个报告是由Acunetix制作的.
无论如何,该报告在我的网站上给了我10页,容易受到sql注入,但我检查了代码,我实际上在每个实例中使用cfqueryparam
处理程序调用的其中一个查询的示例
<cfquery datasource="#application.DSN#" name="qResult" result="r">
update #table# s
set s.loader_status = <cfqueryparam cfsqltype="cf_sql_varchar" value="#ucase(arguments.status)#">
<cfif isDefined("bio_loader_status") and bio_loader_status neq ''>
, s.bio_loader_status = <cfqueryparam cfsqltype="cf_sql_varchar" value="#ucase(bio_loader_status)#">
</cfif>
, s.session_id = NULL
, s.session_expiration = NULL
<cfif isDefined("arguments.rowid") and arguments.rowid neq ''>
where s.rowid = CHARTOROWID(<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.rowid#">)
</cfif>
</cfquery>
Run Code Online (Sandbox Code Playgroud)
我读过的所有内容都告诉我,我可以防止sql攻击(使用cfquery param,使用datasurce和table变量等),但报告另有说法
URL encoded GET input rowid was set to 1'"
Error message found: Error Executing Database Query
GET /index.cfm/status?rowid=1'%22&type=billing HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
有人能说清楚我做错了吗?或者报告的假设是否正确?
sql-injection ×10
php ×6
mysql ×4
security ×3
c# ×2
sql ×2
.net ×1
asp.net ×1
codeigniter ×1
coldfusion ×1
linq-to-sql ×1
login ×1
mysql-5.1 ×1
pdo ×1
protection ×1
xss ×1