我想知道是否有可能创建没有MySQL空间的请求?
我测试了我自己网站的安全性,并且我已经输入:str_replace(" ", "", $POST['id']);所有sql注入变为:
id=-1 UNION SELECT pass...
Run Code Online (Sandbox Code Playgroud)
在strreplace之后:
-1UNIONSELECTpass
Run Code Online (Sandbox Code Playgroud)
这会在我自己的网站上给我一个高水平的安全性吗?是否有其他方法可以将SQL注入查询?
我已经在查询上放了一个mysql_real_escape_string().
我有一个用PHP编写并使用mysql的网站,我想尽可能地保证最大的安全性.我搜索了可以获得的东西,我发现只有注射.我的问题是mysql_real_escape_string功能提供%100安全注射?在编写php和mysql时,我还应该考虑其他任何攻击吗?谢谢你的帮助......
可能的重复:
在PHP中停止SQL注入的最佳方法
在PHP中,当向数据库提交字符串时,我应该使用htmlspecialchars()处理非法字符还是使用正则表达式?
昨天我问了一个关于脚本不工作的问题,而我最终自己解决了这个问题.有人谈论SQL注入风险.
所以我今天要问的是,使用下面插入的代码,如何防止SQL注入?
所以任何指导的建议.我知道我可以在互联网上阅读关于SQL注入的信息,但是有很多相互矛盾的文章,我不知道哪个是正确的.
这是代码,这是所有放在它自己的页面中让我们说'form-process.php'然后表单将数据提交到例如
<?
session_start();
$_SESSION['Title'] = stripslashes($_REQUEST['Title']);
$_SESSION['ShortTitle'] = stripslashes($_REQUEST['Title']);
$_SESSION['Category'] = stripslashes($_REQUEST['Category']);
$_SESSION['Story'] = stripslashes($_REQUEST['Story']);
$_SESSION['FrontPage'] = stripslashes($_REQUEST['FrontPage']);
$_SESSION['imagefilename'] = ($_FILES['image']['name']);
if (empty($_REQUEST['Title'])) {
header("Location: ". $_SERVER['HTTP_REFERER'] ."?message=0");
exit;
} elseif (empty($_REQUEST['ShortTitle'])) {
header("Location: ". $_SERVER['HTTP_REFERER'] ."?message=1");
exit;
} elseif (strlen($_REQUEST['Category']) < 1) {
header("Location: ". $_SERVER['HTTP_REFERER'] ."?message=2");
exit;
} elseif (empty($_REQUEST['Story'])) {
header("Location: ". $_SERVER['HTTP_REFERER'] ."?message=3");
exit;
} else {
include("settings.php");
include("dbconnect.php");
if($_POST['btnSubmit'] == 'Publish'){
$target = "../../../images/matchreports/uploaded/";
$target = $target . time() …Run Code Online (Sandbox Code Playgroud) 如何修改此代码以提高对sql注入和其他威胁的防护?它是一个MS SQL数据库.
<?php include_once("db.php"); ?>
<?php
$id = $_REQUEST['id'];
settype($id, 'string');
$tsql = "SELECT Table1.Fund FROM Table1 WHERE Table1.Fund='%s'";
$tsqlnew=sprintf($tsql, $id);
$stmt = sqlsrv_query( $conn, $tsqlnew);
if( $stmt === false)
{
echo "Error in query preparation/execution.\n";
die( print_r( sqlsrv_errors(), true));
}
$chd = '';
while( $data = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) {
$chd .= '[\''.$data['Fund'] .'\'],';
}
$chd = substr($chd,0,-1);
?>
Run Code Online (Sandbox Code Playgroud)
我也想知道我的数据库连接是否可以改进.谢谢你的帮助!
<?php
$myServer = "server";
$myUser = "userPlaceHolder";
$myPass = "passwordPlaceHolder";
$myDB = "SQL";
$conn = sqlsrv_connect($myServer, array('UID'=>$myUser, 'PWD'=>$myPass, 'Database'=>$myDB)); …Run Code Online (Sandbox Code Playgroud) 我正在使用JSP一段时间.我有这个选择声明:
query = "SELECT * FROM USER_PASS WHERE USERNAME = '" + name + "'";
Run Code Online (Sandbox Code Playgroud)
哪个易受SQL注入攻击.我搜索了一些文章,发现我可以使用预处理语句来避免SQL注入.我发现它更令人困惑.我的意见是,如果我可以找到输入;,'或者--在用户给出的输入中,那么我可以向他们显示一条警告消息,说明你不能在这里使用这些符号,我不会处理数据.这可能是我的JavaScript代码:
function validateSQL()
{
var x=document.forms["myForm"]["username"].value;
var pos = 0;
pos=x.indexOf("'");
if (pos!=0)
{
alert("Trying to hack me?");
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
哪个更好用?这有什么缺点吗?
我有这样的声明:
SELECT * FROM TABLE WHERE COLUMN = 123456
Run Code Online (Sandbox Code Playgroud)
123456由用户提供,因此它容易受到SQLi的攻击,但如果我删除所有分号和括号,黑客是否可以运行任何其他语句(如DROP,UPDATE,INSERT等)除外SELECT?
我已经在使用准备好的语句,但我很好奇,如果输入被删除了行终止符和括号,黑客能否以任何方式修改数据库?
我不太了解SQL注入,但我想要一个简单的答案,因为我只想知道我是否应该只在一个字符串或所有字符串中放置替换(a,"'","''")案件?
vb.net中的示例
"select email from users where id=" & Replace(myId, "'", "''")
Run Code Online (Sandbox Code Playgroud)
和
"select email from users where surname=" & Replace(mySurname, "'", "''")
Run Code Online (Sandbox Code Playgroud)
第一种情况下的替换是否无用?
编辑:
我的问题不是"什么是最好使用而不是替换",但如果我必须使用替换也使用非字符串值.谢谢!
是否有替代PHP的mysql_real_escape_string.我想删除在文本框中输入的任何javascript或php代码.
我正在尝试创建一个登录页面来演示一个简单的SQL注入攻击.下面是从login.html接收输入的php代码:
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'sql-injection');
define('DB_USER','root');
define('DB_PASSWORD','');
$con=@mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
$db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error());
/* $ID = $_POST['user']; $Password = $_POST['pass']; */
function SignIn()
{
session_start(); //starting the session for user profile page
if(!empty($_POST['user']) and !empty($_POST['pass'])) //checking the username and password which is coming from Sign-In.html, are they empty or have some text
{
$query = mysql_query("SELECT * FROM UserName where userName = '$_POST[user]'") or die(mysql_error()); …Run Code Online (Sandbox Code Playgroud) 我用它来验证:
class MyValidationForm(forms.Form):
title = forms.CharField()
body = forms.Textarea()
taxonomy = forms.IntegerField()
Run Code Online (Sandbox Code Playgroud)
这是我基于类的视图:
class blog_createpost(dashboardBaseViews):
template_name = "dashboardtems/blog_createpost.html"
model = {}
def post(self, request, *args, **kwargs):
form = MyValidationForm(request.POST)
if not form.is_valid():
return HttpResponse("not valid")
new_data = post(title=request.POST['title'],
body=request.POST['body'],
description=request.POST['description'],
taxonomy=get_object_or_404(taxonomy,
pk=request.POST['taxonomy']),
writer=request.user)
new_data.save()
return HttpResponse("done")
Run Code Online (Sandbox Code Playgroud)
就像你看到我在这一行检查我收到的请求验证:if not form.is_valid():它的工作,但当我SQL-command在我的表单输入中添加一些.它不会阻止在数据库中插入值!..意味着我在数据库中有一个字段,其中包含一些值select * from user where 1=1!它不会导致用户输入的SQL注入危险吗?...
sql-injection ×10
php ×6
mysql ×4
sql ×4
javascript ×2
django ×1
django-1.11 ×1
forms ×1
html ×1
jsp ×1
python-3.x ×1
replace ×1
security ×1
sql-server ×1
vb.net ×1