我需要为元素属性动态构造XPath查询,其中属性值由用户提供.我不确定如何清理或清理此值以防止XPath等同于SQL注入攻击.例如(在PHP中):
<?php
function xPathQuery($attr) {
$xml = simplexml_load_file('example.xml');
return $xml->xpath("//myElement[@content='{$attr}']");
}
xPathQuery('This should work fine');
# //myElement[@content='This should work fine']
xPathQuery('As should "this"');
# //myElement[@content='As should "this"']
xPathQuery('This\'ll cause problems');
# //myElement[@content='This'll cause problems']
xPathQuery('\']/../privateElement[@content=\'private data');
# //myElement[@content='']/../privateElement[@content='private data']
Run Code Online (Sandbox Code Playgroud)
特别是最后一个让人想起昔日的SQL注入攻击.
现在,我知道会有包含单引号和包含双引号的属性的属性.由于这些是作为函数的参数提供的,因此对这些函数进行消毒的理想方法是什么?
是否有可能在Windows下编写一个程序,在达到预定义的地址时会导致远程进程线程中断(在该线程中停止执行)?
我一直在尝试使用Windows Debug API,但在设置断点时似乎非常有限.DebugBreakProcess函数似乎很有希望,但我找不到有关如何使用此API调用的任何示例.
如何使用Authorization API将用户权限提升为root,以便可以使用mach_inject?
简单,一个SQL注入攻击尽可能少的字符.注意,我并不是试图通过将输入限制到一定的大小来防止SQL注入攻击,而是真的很奇怪即使是最简单的攻击也需要多少个字符才能执行.
为了后人,让我们说最小的表名是4个字符,例如"user".请考虑一下.
如何防止我称之为"正则表达注射"的东西?
我正在使用正则表达式来解析可能看起来像的字符串 - 其中一个示例 -
大小: 10,数量: 20
编写正则表达式以捕获"10"和"20"本身并不难.但是,"大小"和"数量"是可自定义的 - 用户可以选择其他一些单词.
所以我做的是:
var pattern = String.Format(
@"{0}[ \t]*(?<size>{1}|\d*)[ \t]*:[ \t]*{2}:[ \t]*(?<quantity>[\d]*)",
sizeSign,
univerSizeAbbrev,
qtySign);
Run Code Online (Sandbox Code Playgroud)
但是我如何'清理'sizeSign,qtySign(或者univerSizeAbbrev)呢?
正则表达式没有像SQL那样的过程参数(?),所以我如何确保sizeSign和qtySign始终被视为文字,无论它们是什么.
我正在努力提高应用程序的安全性.每当我从用户(无论是通过POST还是GET)接收应该是整数的数据时,我都会适当地验证.但通常数据是VARCHAR,有时可以包含HTML.
在这种情况下,如何保护我的数据库免受SQL注入?
是否 <cfqueryparam value="#form.textInput#" cfsqltype="cf_sql_varchar">保护查询不在VARCHAR值中发送恶意SQL语句?
我想将我的EE应用程序迁移到OSGi.我的应用程序包括业务库,数据库JPA/Entities和REST/WS接口.它还有一个Web客户端.
我首先对结构进行原型设计,并使所有接口和捆绑包以OSGi方式相互通信.我希望在没有任何特定供应商或框架的情况下尽可能使用干净的规范.
我正在使用bnd maven插件来生成清单和声明性服务.我想使用注入从我的其余资源调用OSGI服务(在另一个包上),如下所示:
@Path("some-resources")
@Component
public class SomeResources{
private SomeService service = null;
@Reference
public void setController(SomeService service) { // <- this is never called
this.service = service;
}
@GET
@Produces(javax.ws.rs.core.MediaType.APPLICATION_XML)
public Object getSomeService() { // <- called
try {
service.process("Hello World"); // <- Error null object
}
...
}
Run Code Online (Sandbox Code Playgroud)
我可以使用bnd注释资源@Component并且可以@Resource注入吗?一切正常,但服务始终为空.
为BND声明我的捆绑包以使其成为web/wab包的方法应该是什么?
我使用maven包:
<packaging>bundle</packaging>
...
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.7</version>
<extensions>true</extensions>
<dependencies>
<dependency>
<groupId>biz.aQute</groupId>
<artifactId>bndlib</artifactId>
<version>1.50.0</version>
</dependency>
</dependencies>
<configuration>
<supportedProjectTypes>
<supportedProjectType>ejb</supportedProjectType>
<supportedProjectType>war</supportedProjectType>
<supportedProjectType>wab</supportedProjectType>
<supportedProjectType>bundle</supportedProjectType>
<supportedProjectType>jar</supportedProjectType>
</supportedProjectTypes> …Run Code Online (Sandbox Code Playgroud) 我知道这不是关于此权限的第一个主题,但是其他主题没有完成或者没有帮助我.
我需要的是使用Instrumentation来扩展KeyEvents.这很有效,并且比shell("input keyevent")方法快得多.但是,如果我想注入其他应用程序,我会捕获一个SecurityException.这并没有让我感到惊讶,所以我加入<uses-permission android:name="android.permission.INJECT_EVENTS" />了我的清单.Eclipse停止调试,告诉我只有系统应用程序才能使用此权限.所以我使用签名的apk工具编译并将该apk推送到/ system/app.重新启动,猜猜是什么
W/PackageManager( 3499): Not granting permission android.permission.INJECT_EVENTS to package com.<....> (protectionLevel=2 flags=0x8be45)
Run Code Online (Sandbox Code Playgroud)
该应用仅针对一种特殊设备.所以我知道所有的规格,它根深蒂固.但是 su注射命令需要很长时间,并且需要SuperUser.我很乐意使用Instrumentation做到这一点,或者我还应该尝试其他的东西吗?
固件不是我写的,所以我没有平台密钥.
谢谢你的帮助!
编辑:获得平台键(开发人员使用正常的谷歌键),签名和对齐,然后将apk推送到/ system/app.还添加android:sharedUserId="android.uid.system"到我的清单中.在启动时,不再有logcat消息.但是,当我想发送keysync时,我仍然抓住了SecurityException.有任何想法吗?
EDIT2:这是摘录自ps.似乎包没有列为系统
u0_a108 5241 2399 492044 48968 ffffffff 40113ab0 S com.mypackage
Run Code Online (Sandbox Code Playgroud) 使用Injection可以对Objective-C®类的实现进行更改,并在保存类后立即生效,而无需重新启动应用程序.
这是Xcode的一个很棒的插件,但是它有一些限制(不可能的范围)会破坏整体的良好印象......
我还没有测试动态代码注入,但它应该做同样类型的工作:
动态代码注入可以节省您浪费的时间,同时等待项目在模拟器上重新编译和重新启动,从而提高您的工作效率.换句话说,在更改代码或资源以及查看实际结果之间不再需要等待.
所以我的问题是你能推荐一些其他类似的工具/插件用于动态代码注入吗?或者至少你听说过一些类似的东西吗?
code-injection ×10
sql ×2
android ×1
bnd ×1
c# ×1
cfqueryparam ×1
coldfusion ×1
dependencies ×1
jax-rs ×1
keyevent ×1
macos ×1
osgi ×1
permissions ×1
php ×1
regex ×1
rest ×1
sanitization ×1
user-input ×1
xcode ×1
xml ×1
xpath ×1