このセクションには、ソース コード以外のものでも、作成中の製品のセキュリティにとって重要なものがすべて含まれています。この分野が対象とする問題は、ソース コードに直接関係しないため、この分野の他の部分と分けました。
<behavior name="DefaultBehavior" returnUnknownExceptionsAsFaults="false">
<serviceCredentials>
<serviceCertificate
x509FindType="FindBySubjectName"
findValue="MyCertificate"
storeLocation="LocalMachine"
storeName="My"/>
<clientCertificate>
<authentication certificateValidationMode="ChainTrust" revocationMode="None"/>
</clientCertificate>
</serviceCredentials>
<metadataPublishing enableGetWsdl="true" enableMetadataExchange="true" enableHelpPage="true"/>
</behavior>
...
<security mode="Message">
<message clientCredentialType="UserName" />
...
UsernameToken
をシグネチャまたは暗号化なしで SOAP メッセージで送信できます。
<sp:SupportingTokens>
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SupportingTokens>
<EncryptedParts>
タグに <sp:Attachments>
タグが含まれていないため、SOAP メッセージの添付ファイルの暗号化は要求されません。
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<EncryptedParts>
タグに <sp:Body>
タグが含まれていないため、SOAP メッセージの本文の暗号化は要求されません。
<sp:EncryptedParts>
<sp:Header .../>
</sp:EncryptedParts>
<EncryptedParts>
タグに <sp:Header>
タグが含まれていないため、SOAP メッセージのヘッダーの暗号化は要求されません。
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:SignatureToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:SignatureToken>
...
</wsp:Policy>
</sp:SymmetricBinding>
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorSignatureToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:InitiatorSignatureToken>
<sp:RecipientEncryptionToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:RecipientEncryptionToken>
<sp:RecipientSignatureToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:RecipientSignatureToken>
...
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorEncryptionToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:InitiatorEncryptionToken>
<sp:RecipientEncryptionToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:RecipientEncryptionToken>
<sp:RecipientSignatureToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:RecipientSignatureToken>
...
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorEncryptionToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:InitiatorEncryptionToken>
<sp:InitiatorSignatureToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:InitiatorSignatureToken>
<sp:RecipientSignatureToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:RecipientSignatureToken>
...
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorEncryptionToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:InitiatorEncryptionToken>
<sp:InitiatorSignatureToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:InitiatorSignatureToken>
<sp:RecipientEncryptionToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:RecipientEncryptionToken>
...
</wsp:Policy>
</sp:AsymmetricBinding>
<SignedParts>
タグに <sp:Attachments>
タグが含まれていないため、SOAP メッセージの添付ファイルに署名する必要はありません。
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<SignedParts>
タグに <sp:Body>
タグが含まれていないため、SOAP メッセージの本文に署名する必要はありません。
<sp:SignedParts>
<sp:Header .../>
</sp:SignedParts>
<SignedParts>
タグに <sp:Headery>
タグが含まれていないため、SOAP メッセージのヘッダーに署名する必要はありません。
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:EncryptionToken>
<wsp:Policy>
...
</wsp:Policy>
</sp:EncryptionToken>
...
</wsp:Policy>
</sp:SymmetricBinding>
<IncludeTimestamp>
タグがコメント アウトされています。
<sp:AsymmetricBinding>
<wsp:Policy>
...
<!--<sp:IncludeTimestamp/>-->
<sp:ProtectTokens/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:AsymmetricBinding>
<ProtectTokens>
タグが省略されています。
<sp:AsymmetricBinding>
<wsp:Policy>
<sp:InitiatorToken>
...
</sp:InitiatorToken>
<sp:RecipientToken>
...
</sp:RecipientToken>
<sp:AlgorithmSuite>
...
</sp:AlgorithmSuite>
<sp:Layout>
...
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:SupportingTokens>
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken11/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SupportingTokens>
processContents
属性が lax
または skip
に設定されている場合、ワイルドカードの要素や属性に対して入力検証は実行されません。
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="cart" >
<xs:complexType>
<xs:sequence>
<xs:element name="itemID" maxOccurs="1" />
<xs:any namespace="http://itemInfo" processContents="lax" minOccurs="1" maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0"?>
<xsd:schema targetNamespace="http://itemInfo" xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="description" type="xsd:string"/>
</xsd:schema>
http://itemInfo
名前空間の任意のタグの検証を許可するため、次の XML が検証に合格してしまいます。
<?xml version=\"1.0\" ?>
<cart xmlns:itemInfo="http://itemInfo">
<itemID>123</itemID>
<itemInfo:name>Shoes</itemInfo:name>
<itemInfo:description>Black Shoes</itemInfo:description>
<itemInfo:price>1.00</itemInfo:price>
</cart>
itemInfo:price
タグが含まれています。そのため、この XML 文書のユーザーが Shoes
の価格を 1 ドルに設定するように仕向ける可能性があります。<any>
要素は、XML インジェクションなどの攻撃の実行を容易にします。<any>
要素は、任意のタグを有効なドキュメントに含めることができることを意味します。任意のコンテンツを許可すると、攻撃者が XML インジェクションなどの攻撃を実行しやすくなります。
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="cart" >
<xs:complexType>
<xs:sequence>
<xs:element name="itemID" maxOccurs="1" />
<xs:element name="price" maxOccurs="1" />
<xs:element name="description" maxOccurs="1"/>
<xs:any minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="description" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
<xs:element name="code" type="xs:string"/>
</xs:schema>
<any>
要素を使用するため、次の XML ドキュメントが有効と見なされます。
<?xml version=\"1.0\" ?>
<cart>
<itemID>123</itemID>
<price>50.00</price>
<price>1.0</price>
</cart>