标签: code-injection

在PHP中清理发往数据库的用户输入

我有这个代码:

$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)

php sanitization sql-injection code-injection sanitize

0
推荐指数
2
解决办法
2822
查看次数

导致sql注入

我正在学习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(当然在标记的脚本内)

谢谢 ...

html php sql forms code-injection

0
推荐指数
1
解决办法
153
查看次数

我应该在eval()中过滤哪些关键字?

我需要使用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)

我还没有开始测试,所以这些只是我最初的想法.

有人对此有经验或意见吗?

谢谢,戴夫

javascript security eval code-injection jsfiddle

0
推荐指数
2
解决办法
328
查看次数

如何区分String中的两个字符串?(如何防止纯文本注入)

假设我有两个随机生成的字符串.

我可以做什么来生成一个生成两个字符串的String,同时能够拆分它们以获得原始的两个字符串供以后使用?

例如,我有"[aweiroj\3aoierjvg0_3409"和"4093 w_/e9".如何将这两个单词附加到一个变量中,同时能够将它们拆分为原始的两个字符串?

我的问题是,我似乎找不到.spit()的正则表达式,因为这两个字符串可以有任何字符(alpabet,整数,\,/,空格......).

编辑

我只是想到了一个可以使用它的真实案例.有时,通过网络(HTTP)发送纯文本比xml或json更好.宽带速度慢的服务器 - 使用xml或json,宽带慢速的快速服务器 - 使用纯文本.以下答案可能会阻止纯文本注入.但是,这些方法没有基准测试或测试,我可能会在实际使用它们之前测试这些方法.

java string code-injection

0
推荐指数
1
解决办法
149
查看次数

随机用户发送了网站上的bug通知,怀疑我们可能已被黑客攻击但不确定

一些随机的人在一条消息中发送说我们网站上有一个错误.他们将我们引导到我们网站内的特定网址,这显然是不正确的.

我们没有点击链接,我已经检查了服务器,以查看我没有制作的文件的最新更新.我发现的唯一一件事就是一个空文本文件,这是一个很长的疯狂文件名:

MJ12_43CC245DB24A2F895E300CD7F1BAE3E5.txt

此人发送给我们的链接是这样的(隐私改变的细节)

http://www.oursite.com/buy.php?category=accessories%22%3C%3E%27%3Cscript%3Ealert%28123%29%3C/script%3E

php security code-injection

0
推荐指数
1
解决办法
86
查看次数

将 eval() 转换为 JSON.parse

我正在经历使用 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?

javascript xss json eval code-injection

0
推荐指数
1
解决办法
1464
查看次数

Linux bash shell 注入命令的可能列表是什么?

我们正在编写一个接收参数的 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)

linux bash shell code-injection

0
推荐指数
1
解决办法
4804
查看次数

如何通过URL栏将JavaScript注入网站?

这是我注入页面的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栏中运行此代码后,我检查网站的源代码.按钮和功能定义都存在,但按下按钮不会像预期的那样运行警报.

可能是什么问题呢?

html javascript code-injection

-1
推荐指数
1
解决办法
1万
查看次数

将 32 位图像从 64 位应用程序映射到 32 位进程

我试图找出一种方法(通过 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)

c++ windows code-injection dll-injection windows-10

-1
推荐指数
1
解决办法
497
查看次数

这会阻止SQL注入吗?

以下代码是否更好地防止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)

php mysql code-injection

-2
推荐指数
1
解决办法
93
查看次数