我有这个代码:
$query = "select id from votes where username = '$user' and article_id = $this->id";
Run Code Online (Sandbox Code Playgroud)
我尝试使用此代码来清理它:
$query = sprintf("select id from votes where username = '$user' and article_id = $this->id",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
Run Code Online (Sandbox Code Playgroud)
但我得到mysql_real_escape行的这个错误:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'mexautos'@'localhost' (using password: NO) in /home/mexautos/public_html/kiubbo/data/article.php on line 145 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/mexautos/public_html/kiubbo/data/article.php on line 145 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'mexautos'@'localhost' (using password: NO) in /home/mexautos/public_html/kiubbo/data/article.php on …Run Code Online (Sandbox Code Playgroud) 我正在学习sql注射,非常感兴趣如何引起这种情况.我写过脚本来看看它是怎么回事.所以这是我的代码=>
if (isset($_POST['act'])){
if ($connection = mysqli_connect($var['host'],$var['user'],$var['password'],$var['database'])){
if (mysqli_connect_errno()==0){
$username = $_POST['username'];
$password = $_POST['pswd'];
if ($result = mysqli_query($connection,"SELECT username,password FROM login WHERE username='" . $username . "' AND password='" . $password . "'")){
if (mysqli_num_rows($result)){
header("Location: http://localhost/default.php");
} else {
$res = "Invalid Credentials ...";
}
}
}
}
}
<form name="action" method="post" action="index.php">
Username:<input type="text" name="username" size="12"><br>
Password:<input type="password" name="pswd" size=12><br>
<input type="submit" name="act" value="Login">
</form>
Run Code Online (Sandbox Code Playgroud)
我在形式上这样写,但没有发生任何事情
用户名和密码形式=> some'OR'1'='1'
我很感兴趣如何导致sql注入破坏这个脚本并且没有有效的凭证重定向到default.php(当然在标记的脚本内)
谢谢 ...
我需要使用eval()来构建我正在构建的基于JavaScript的Web应用程序.
这样做的原因是我想让人们编写自己的函数来存储为文本,并且可以在网站上重新使用,然后需要再次使用它们.按照jsFiddle的思路思考.
代码将运行并评估,或者作为脚本标记插入.无论哪种方式,它都会让恶意用户开放JavaScript注入网站.因此,我打算过滤提交的代码,或者当用户加载另一个用户的脚本时,有一条警告消息,用户应该在继续之前首先阅读/检查脚本.
到目前为止,我希望过滤/警告以下关键字:
eval
execScript
script
window.*
setInterval
setTimeout
alert
confirm
prompt
document.*
write
innerHTML
insertAdjacentHTML
createElement
appendChild
setAttribute
form.*
submit
XMLHttpRequest
jQuery.*
ajax
base64encode
base64decode
Run Code Online (Sandbox Code Playgroud)
我还没有开始测试,所以这些只是我最初的想法.
有人对此有经验或意见吗?
谢谢,戴夫
假设我有两个随机生成的字符串.
我可以做什么来生成一个生成两个字符串的String,同时能够拆分它们以获得原始的两个字符串供以后使用?
例如,我有"[aweiroj\3aoierjvg0_3409"和"4093 w_/e9".如何将这两个单词附加到一个变量中,同时能够将它们拆分为原始的两个字符串?
我的问题是,我似乎找不到.spit()的正则表达式,因为这两个字符串可以有任何字符(alpabet,整数,\,/,空格......).
我只是想到了一个可以使用它的真实案例.有时,通过网络(HTTP)发送纯文本比xml或json更好.宽带速度慢的服务器 - 使用xml或json,宽带慢速的快速服务器 - 使用纯文本.以下答案可能会阻止纯文本注入.但是,这些方法没有基准测试或测试,我可能会在实际使用它们之前测试这些方法.
一些随机的人在一条消息中发送说我们网站上有一个错误.他们将我们引导到我们网站内的特定网址,这显然是不正确的.
我们没有点击链接,我已经检查了服务器,以查看我没有制作的文件的最新更新.我发现的唯一一件事就是一个空文本文件,这是一个很长的疯狂文件名:
MJ12_43CC245DB24A2F895E300CD7F1BAE3E5.txt
此人发送给我们的链接是这样的(隐私改变的细节)
我正在经历使用 eval() 对于基于 XSS 的攻击的不良影响。我需要保护一段代码免受可能的 XSS 攻击,我猜 JSON.parse() 应该可以正常工作。
var request = new XMLHttpRequest();
var url = encDataPath + "/jcr:content/metadata.json?_charset_=utf-8";
url = Granite.HTTP.externalize(url);
request.open("GET", url ,false);
request.send(null);
var jsonData =eval("(" + request.responseText + ")"); // <-- here
var assetTitle = jsonData["dc:title"];
var mimetype = jsonData["dc:format"];
Run Code Online (Sandbox Code Playgroud)
有人可以建议我如何将eval()(jsonData)更改为JSON.parse?
我们正在编写一个接收参数的 Linux bash shell 脚本。当脚本接收到可能的 shell 注入命令作为参数时,我们希望它失败。我在下面使用正则表达式添加了一些命令。有人可以给我所有此类命令的可能列表,以便我们可以避免威胁
invalid_format="(^.*[;&|].*$)|(\brmdir\b)|(\bls\b)|(rm\s-)|(\bping\b)"
if [[ $LOCAL_DIR =~ $invalid_format ]]; then
echo "Error! LOCAL_DIR cannot contain command chaining characters like ; && || or possible shell injection commands"
exit 1
Run Code Online (Sandbox Code Playgroud) 这是我注入页面的JavaScript代码:
javascript:{document.head.innerHTML+='<script>function inject(){alert("hello");}</script>';
document.body.innerHTML+='<button onclick="inject()">Run</button>';}
Run Code Online (Sandbox Code Playgroud)
在URL栏中运行此代码后,我检查网站的源代码.按钮和功能定义都存在,但按下按钮不会像预期的那样运行警报.
可能是什么问题呢?
我试图找出一种方法(通过 loadlibrary 或最好手动)将 32 位图像(dll)从 64 位运行应用程序映射到 32 位进程。有任何想法吗?
目前,注入/映射一切看起来都在工作,但是在使用仅创建消息框的空 dll 进行测试时,它实际上并没有创建消息框。当来自 32 位应用程序时,注入工作正常。
这是我用 LoadLibrary 测试的方法
EnsureElevation( ); // ensures that we're run as admin and that we have debug privs
// messy code because it's test code
LPVOID LoadLib = ( LPVOID )GetProcAddress( GetModuleHandleA( "kernel32.dll" ), "LoadLibraryA" );
HANDLE Proc = OpenProcess( PROCESS_ALL_ACCESS, false, GetProcessID( L"target.exe" ) );
std::cout << Proc << '\n';
std::cout << "Proc Error: 0x" << std::hex << GetLastError( ) << '\n'; // 0x0
LPVOID …Run Code Online (Sandbox Code Playgroud) 以下代码是否更好地防止MySQL数据库上的SQL注入mysqli_real_escape_string?
$str = "SELECT * FROM customers WHERE username = '; DELETE FROM customers WHERE 1 or username = '";
$str2 = "";
for($i = 0; $i < strlen($str); $i++)
{
if (strpos ("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ,.?!0123456789", $str[$i], 0) !== FALSE)
{
$str2 = $str2 . $str[$i];
}
}
echo "$str2";
Run Code Online (Sandbox Code Playgroud)